初始化数组的c++语法

c++ syntax for initializing arrays

本文关键字:语法 c++ 数组 初始化      更新时间:2023-10-16

我偶然发现了这个代码片段,它在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++。