Error C2057: expected constant expression

后端 未结 2 649
广开言路
广开言路 2021-01-17 18:05
if(stat(\"seek.pc.db\", &files) ==0 )
     sizes=files.st_size;

sizes=sizes/sizeof(int);
int s[sizes];

I am compiling this in Visual Studio 20

2条回答
  •  囚心锁ツ
    2021-01-17 18:26

    Size of an array must be a compile time constant. However, C99 supports variable length arrays. So instead for your code to work on your environment, if the size of the array is known at run-time then -

    int *s = malloc(sizes);
    // ....
    free s;
    

    Regarding the error message:

    int a[5];
       // ^ 5 is a constant expression
    
    int b = 10;
    int aa[b];
        // ^   b is a variable. So, it's value can differ at some other point.
    
    const int size = 5;
    int aaa[size];  // size is constant.
    

提交回复
热议问题