Alex Rivera | Logout

Error C2057: expected constant expression

Asked 2011-09-05T03:47:29.520
12
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 2008 and I am getting the following error: error C2057: expected constant expression error C2466: cannot allocate an array of constant size 0.

I tried using vector s[sizes] but of no avail. What am I doing wrong?

Thanks!

Edit
Report

1 Answer

6

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.
answered 2011-09-05T04:05:27.970

Your Answer