为什么编译器认为这个变量不是常数?

m4d*_*ign 3 c c++ compiler-construction compiler-errors

这是我的代码:

int main()
{
 const int LEN = 5;
 int x[LEN];
}
Run Code Online (Sandbox Code Playgroud)

VS10说:

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

错误C2466:无法分配常量大小为0的数组

错误C2133:'x':未知大小

我甚至尝试了这个页面中的代码并且它给出了同样的问题(我评论了给出错误的代码,并且取消注释了正确的代码):http: //msdn.microsoft.com/en-us/library/eff825eh% 28VS.71%29.aspx

如果我正在尝试一个糟糕的编译器,我会认为这是编译器中的一个错误,但它是VS2010!

小智 10

您可能使用.c扩展名编译了代码.MS Visual C不支持C99.在C89中,数组的大小必须是常量表达式.const合格变量不是C中的常量.它们不能用于需要实常数的地方.

另请阅读AndreyT的这篇优秀文章.

尝试使用.cpp扩展名保存文件.