我正在尝试使用数组作为全局变量。似乎我无法使用以前初始化的变量(例如 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;