c++ - 为什么指定的初始化程序没有在 g++ 中实现

标签 c++ c linux gcc designated-initializer

g++ 中没有添加对指定初始化程序的支持有什么具体原因吗?是因为C99标准来得晚,g++开发得早,后来人们不关心这个问题,还是C++语法中实现指定初始化器有一些内在的困难?

最佳答案

我今天遇到了同样的问题。带有 -std=c++11 和 c++14 的 g++ 确实支持指定的初始化程序,但是如果您仍然可以得到编译错误“test.cxx:78:9: sorry, unimplemented: non-trivial specified initializers not supported”不要按照定义其成员的顺序初始化结构。举个例子

struct x
{
    int a;
    int b;
};

// This is correct
struct x x_1 = {.a = 1, .b = 2};
// This will fail to compile with error non-trivial designated initializer
struct x x_2 = {.b = 1, .a = 2};

关于c++ - 为什么指定的初始化程序没有在 g++ 中实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4900739/

相关文章:

c - 使用 MPI-IO 写入多个共享文件

c - 交换C中多维数组的子数组

c - PSoC 1 中不同引脚的 GPIO 中断

linux - gl.h : No such file or directory, 我似乎无法消除这个错误

c++ - boost .Asio : Is it a good thing to use a `io_service` per connection/socket?

c++ - 如何检查数据库是否存在?

linux - 根据 $LD_LIBRARY_PATH 和架构选择库

c - 如何知道计时器是否已在 C 中结束

c++ - weakpointer 可以替代同步问题中的互斥体或临界区吗

c++ - 消除函数参数的复制