使用数组作为全局变量

问题描述 投票:-1回答:2

我试图使用数组作为全局变量。似乎我不能使用先前初始化的变量,如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;
}
c++ arrays global-variables
2个回答
1
投票

具有全局范围或定义为static的数组需要在编译时知道维度,正如Neil所说,将l声明为const实现了这一点。

作为gcc / clang扩展,在函数内分配的数组(即,在堆栈上分配)可以具有仅在运行时已知的维度。然而,这不是标准的,并且(例如)MSVC不允许它。


1
投票

只需改变l即可

const int l=3;
© www.soinside.com 2019 - 2024. All rights reserved.