3
我碰到过这段代码片段,它用g ++编译得很好。我可以理解正在发生的事情,但这是有效的C++还是扩展?初始化数组的C++语法
const char* msgs[] =
{
[0] = "message0",
[1] = "message1"
};
我碰到过这段代码片段,它用g ++编译得很好。我可以理解正在发生的事情,但这是有效的C++还是扩展?初始化数组的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++标准的声明。
这是完全合法的,并且对初始化某个索引而非整个数组非常有用 – texasbruce