一小段代码:
void func()
{
const int BUF_SIZE = 5;
char scale[BUF_SIZE];
}
此代码在C ++下构建正常,但在C下我有错误:
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
为什么?
编译器:Microsoft Visual C ++ 2008
提前致谢!
答案 0 :(得分:5)
在C(所有变体,我相信)中,具有讽刺意味的是,const
不是C中的常量表达式。在C99之前,数组长度必须是常量表达式。
但是,C99具有“可变长度数组”的概念,因此如果您使用符合C99的编译器进行编译,即使BUF_SIZE
不是常量表达式,您的代码也应该有效。
答案 1 :(得分:2)
我会做这样的事情:
#define BUF_SIZE 5
void func(){
char scale[BUF_SIZE];
}
这将做你需要的事情
答案 2 :(得分:1)
更好的是,使用 enum { BUF_SIZE = 5 };
以便调试器知道它。