我试图使用数组作为全局变量。似乎我不能使用先前初始化的变量,如l
来标注数组,我得到以下错误
错误:数组绑定在']'标记之前不是整数常量。
但是,当我尝试在main
函数中使用相同的东西时,这是可能的。
有人能解释一下这里发生了什么吗?
// If you move the following lines inside the main function then everything works fine
int l=3;
int a[l]={1,2,3};
int main()
{
return 0;
}
具有全局范围或定义为static
的数组需要在编译时知道维度,正如Neil所说,将l
声明为const
实现了这一点。
作为gcc / clang扩展,在函数内分配的数组(即,在堆栈上分配)可以具有仅在运行时已知的维度。然而,这不是标准的,并且(例如)MSVC不允许它。
只需改变l即可
const int l=3;