如何使用gcc工具链在c++11中只初始化全局数组的几个元素
How to initialize only a few elements of a global array in c++11 with gcc toolchain?
我有以下代码:
#include <iostream>
int array[10] = {
[2] = 200,
[5] = 500
};
int main() {
std::cout << "Hello World!n";
std::cout << array[5];
return 0;
}
当我用g++ -std=c++11 -o main main.cpp
编译时,我得到以下错误:
main.cpp:6:1: sorry, unimplemented: non-trivial designated initializers not supported
};
^
main.cpp:6:1: sorry, unimplemented: non-trivial designated initializers not supported
有没有办法用g++来做这个?Clang工作得很好。
这是C的一个称为指定初始化程序的功能,在标准C++中不可用。因此,虽然一些编译器可能允许将其作为扩展,但它不是语言的一个特性(因此不可移植(。
现在我不知道你的实际数组是否会比这更复杂,但如果不是,你可以使用
int array[10] = { 0, 0, 200, 0, 0, 500 };
与其他文章提到的一样,用于该数组的语法来自C,而不是标准C++。
但是,如果您在global中声明了一个大数组,并且只想指定几个值,那么您可以执行以下操作:
int array[500];
int main()
{
array[2] = 200;
array[5] = 500;
}
通过在global中声明数组,它将在编译时完成,因此它将使所有成员初始化为0
。
相关文章:
- 数组元素打印的递归方法
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 为什么使用数组元素查找最大数字的程序不起作用?
- 数组元素更改值?
- 如何访问宏中定义的数组元素
- 将数组元素递增 1
- C++函数,它将数组、谓词和运算符作为参数,并将运算符应用于满足谓词的数组元素
- 存储指向动态数组元素的指针
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 在 std::map 中插入数组元素
- 使用指针访问数组元素时出现意外结果
- c++ 使用动态分配运算符反向数组元素
- 为什么在 c++ 中分配 char 数组元素时,分配的字符会被销毁?
- 缺少数组元素问题
- 如何在类中制作 2D 数组元素,然后在其构造函数中指定其维度?
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 删除在结构 c++ 中声明的数组元素
- Getter 和 Setter 用于类 C++ 中的数组元素
- 尝试递归获取数组元素的总和
- 使用SWIG将numpy数组元素(int)传递给c++int