我遇到了这个代码片段,用g ++编译好了。我能理解发生了什么,但这是有效的c ++还是扩展?
const char* msgs[] =
{
[0] = "message0",
[1] = "message1"
};
答案 0 :(得分:2)
这是有效的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 ++。