用于初始化数组的 c++ 语法
Posted
技术标签:
【中文标题】用于初始化数组的 c++ 语法【英文标题】:c++ syntax for initializing arrays 【发布时间】:2015-10-25 23:38:46 【问题描述】:我遇到了这个代码片段,它用 g++ 编译得很好。我能理解发生了什么,但这是有效的 c++ 还是扩展?
const char* msgs[] =
[0] = "message0",
[1] = "message1"
;
【问题讨论】:
这是完全合法的,并且在特定索引而不是整个数组初始化非常有用 【参考方案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++。
【讨论】:
以上是关于用于初始化数组的 c++ 语法的主要内容,如果未能解决你的问题,请参考以下文章