使用数组作为全局变量



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

相关内容

  • 没有找到相关文章

最新更新