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

时间:2015-10-25 23:38:47

标签: c++ arrays initialization

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

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

1 个答案:

答案 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 ++。