用于初始化数组的 C++ 语法

c++ syntax for initializing arrays

我发现了这个代码片段,它用 g++ 编译得很好。我能理解发生了什么,但这是有效的 C++ 还是扩展?

const char* msgs[] = 
{
    [0] = "message0",
    [1] = "message1"
};

这是有效的 C 语法。在 C 中,您可以使用所谓的 指示符。

designator:
    [ constant-expression ]
    . identifier

再举一个例子

struct A
{
   int x;
   int y;
} a = { .x = 10, .y = 20 };

但是它在 C++ 中无效。在 C++ 中你应该写

const char* msgs[] = 
{
    "message0",
    "message1"
};

如果 C++ 编译器编译了您显示的声明,那么它是它自己的不符合 C++ 的语言扩展。