c++ - 使用数组作为全局变量
问题描述
我正在尝试将数组用作全局变量。似乎我不能使用先前初始化的变量,例如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;
}
解决方案
具有全局范围或定义为static
在编译时已知的需要维度的数组,正如 Neil 所说,声明l
为const
实现了这一点。
作为 gcc / clang 扩展,在函数内分配的数组(即在堆栈上分配)可以具有仅在运行时知道的维度。然而,这不是标准的,并且(例如)MSVC 不允许这样做。
推荐阅读
- sling - Sightly/HTL listChildren 与当前路径不同
- c++ - 如何将 boost asio tcp 套接字传递给线程以向客户端或服务器发送心跳
- kubernetes - Google Kubernetes Engine 入口注释
- html - col-lg-2 col-md-4 col-6 在 bootstrap 4 上不起作用。在移动视图中,它们显示为 col-md-4 而不是 col-6
- .net - 输入类型对象可以包含接口类型的属性吗?
- c++ - 没有 STL 容器的迭代器
- java - 作为bean传递时没有得到服务器响应
- reactjs - 在 material-ui 中动态添加、删除、更改、禁用/启用菜单项并做出反应
- html - 单击按钮更改表单
- c++ - 如何减少功能模板专业化?