【问题标题】:Using Arrays as Global Variables使用数组作为全局变量
【发布时间】:2019-04-11 22:30:25
【问题描述】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      把l改成

      const int l=3;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-13
        • 1970-01-01
        • 2020-11-25
        • 2017-02-01
        相关资源
        最近更新 更多