我有一些像这样的代码:
static int a = 6;
static int b = 3;
static int Hello[a][b] =
{
{ 1,2,3},
{ 1,2,3},
{ 1,2,3},
{ 1,2,3},
{ 1,2,3},
{ 1,2,3}
};
Run Code Online (Sandbox Code Playgroud)
但是当我编译它时,它说错误:
在文件范围内可变地修改了"Hello"
怎么会发生这种情况?我该怎么办呢?
本以为C不会再给我带来惊喜了,但这却让我大吃一惊。
const int NUM_FOO = 5;
....
int foo[NUM_FOO];
==>error C2057: expected constant expression
Run Code Online (Sandbox Code Playgroud)
我的 C++ 经验让我在内部#define尽可能地反对。所以这真是一个惊喜。VS2019,使用/TC编译。我认为 C99 无论如何都允许可变大小的数组。
任何人都可以解释为什么会发生拒绝,因为编译器在编译时肯定知道数组的大小?
C99不是允许可变大小数组吗?