【问题标题】:C99 designator member outside of aggregate initializer聚合初始值设定项之外的 C99 指示符成员
【发布时间】:2022-01-07 09:06:47
【问题描述】:
struct Foo {
    char a[10];
    int b;
};

static Foo foo = {.a="bla"};

编译上面的代码会出现以下gcc错误:

$ gcc -std=gnu++2a test.cpp 

C99 designator ‘a’ outside aggregate initializer

我认为像这样的初始化列表中的 c 字符串指示符在 C++20 中可以吗?我错过了什么?我使用的是 gcc 版本 10。

【问题讨论】:

  • 用clang/msvc Demo编译。

标签: c++ gcc


【解决方案1】:

这是 GCC 的一个已知错误:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55227

不幸的是,您必须要么不使用指定的初始化器,要么为数组使用不同的初始化器:

static Foo foo = {"bla"};
static Foo foo = {.a={'b', 'l', 'a', 0}};

【讨论】:

    猜你喜欢
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多