C中的const:无法分配常量大小为0的数组

时间:2011-06-09 09:44:52

标签: c

一小段代码:

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

提前致谢!

3 个答案:

答案 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 }; 以便调试器知道它。