错误C2057:预期的常量表达式

时间:2011-09-05 03:47:30

标签: c visual-studio-2008 vector

if(stat("seek.pc.db", &files) ==0 )
     sizes=files.st_size;

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

我在Visual Studio 2008中编译它,我收到以下错误: 错误C2057:预期的常量表达式 错误C2466:无法分配常量大小为0的数组。

我尝试使用矢量[尺寸],但无济于事。我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:11)

C中的数组变量大小必须在编译时知道。如果你只在运行时知道它,那么你必须自己malloc一些记忆。

答案 1 :(得分:5)

数组的大小必须是编译时常量。但是,C99支持可变长度数组。因此,如果您的代码在您的环境中工作,如果在运行时已知数组的大小,那么 -

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

关于错误消息:

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.