我看过这些,但他们没有回答我的问题:
我正在尝试编写一些相当可移植的c
代码:
int main ()
{
const int foo=13;
int bar[foo]={0};
return 0;
}
使用以下任一方法variable-sized object may not be initialized
编译为c
代码时出现错误:
- GCC 4.3.4
- arm-linux-gnueabi-gcc 4.4.5
如果我像c
在VS2008中那样编译它,我会得到一个稍微不同的error C2057: expected constant expression
我知道在这里,c
代码编译器没有识别const int foo=13;
出真正的常量;例如我们可能有
void a(int fool)
{
const int foo=fool;
int bar[foo]={0};
}
我还意识到,与 gcc 编译器不同,VS2008编译器没有C99 可变长度数组的概念。而那个 MS 显然没有提到任何未来的支持。
然而,cpp
使用gcc或MS编译器的代码编译完全不同/更聪明?!
而且我对gcc代码编译器的不理解是: c
(注意:在最后一种情况下,MS c
代码编译失败;与 一致int bar[foo]={0};
)