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