我有以下代码:
#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++ - 如何使用gcc工具链初始化c++ 11中的全局数组的几个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64073547/