使用数组作为全局变量

时间:2019-04-11 22:30:26

标签: c++ arrays global-variables

我正在尝试将数组用作全局变量。看来我无法使用先前初始化的变量(例如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;
}

2 个答案:

答案 0 :(得分:1)

只需将l更改为

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

答案 1 :(得分:1)

具有全局范围或定义为static的数组需要在编译时就知道维数,而且正如Neil所说,将l声明为const即可达到这一目的。

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