c++ - 如何使用gcc工具链初始化c++ 11中的全局数组的几个元素?

标签 c++ c++11 g++

我有以下代码:

#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/

相关文章:

c++ - 在 C99 中需要 _Bool 吗?

c++ - std::async 使用绑定(bind)到 lambda 的右值引用

c++ - 将可变参数模板传递给 pthread_create

g++ - 没有规则可以创建目标... libm.a

c++ - 如何可靠地让析构函数覆盖缓冲区而不在 C++ 中对其进行优化

c++ - G++:可以将 __attribute__((__may_alias__)) 用于指向类实例而不是类定义本身的指针吗?

c++ - 使用 MysqlConnector/C 还是 MysqlConnector/C++?

c++ - 在 C++ 中访问类中的字段和类型列表

c++ - 如何展开模板特化

c++ - 如何使用 QuantLib 计算单名债券价格?