子对象如何在C中工作?

时间:2017-02-20 03:19:45

标签: c arrays clang subobject

自定义类型的C数组中独立方括号的含义是什么?

Library    /absolute/path/Library.py

在上面的代码中,typedef enum { BAR_1 = 0, BAR_2, BAR_3, } bar_types; typedef struct { int is_interesting; int age; } foo_s; static foo_s bars[] = { [BAR_1] = {1, 2}, /* What is being done here? */ [BAR_2] = {1, 41}, [BAR_3] = {0, 33}, }; 的含义是什么?什么时候可以使用独立的方括号?

我注意到如果我在括号中添加重复值,clang会发出关于子对象初始化的警告。

[BAR_1] = {1, 2}

什么是C子对象?

1 个答案:

答案 0 :(得分:2)

这是结构初始化,"子对象"是正在初始化的结构的实例。

您的警告来自于尝试两次初始化相同的阵列位置。

另见How to initialize a struct in accordance with C programming language standards