首页 > 解决方案 > 使用数组作为全局变量

问题描述

我正在尝试将数组用作全局变量。似乎我不能使用先前初始化的变量,例如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++arraysglobal-variables

解决方案


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

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


推荐阅读