【问题标题】:c++ syntax for initializing arrays用于初始化数组的 c++ 语法
【发布时间】:2015-10-25 23:38:46
【问题描述】:

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

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

【问题讨论】:

  • 这是完全合法的,并且在特定索引而不是整个数组初始化非常有用

标签: c++ arrays initialization


【解决方案1】:

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

designator:
    [ constant-expression ]
    . identifier

再举一个例子

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-10-10
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    相关资源
    最近更新 更多