如何在 C 中初始化结构

How do I initialize a struct in C

我收到一条关于我如何在 C 中初始化我的结构的评论,说它不起作用,也无法编译。

这就是我在 C 中创建和初始化结构的方式。

struct {
int a; 
int b;
char arr[3];
.
.
.
} data = {
.a = 1, 
.b = 2
};

main(){
/* do stuff */
}

这是我初始化结构的方式,它可以工作和编译。然而我收到一条评论说这会为 C++ 编译但不能为 C 编译。有人可以确保我这是正确的选择吗?如果不是为什么编译没有错误?

我认为数据成员的声明有错别字arr。而不是

char [3]arr;

你必须写

char arr[3];

您不能用空括号初始化数组。所以写成例如

struct {
int a; 
char arr[3];
.
.
.
} data = {
.a = 1, 
.arr = { 0 }
};

其实写就够了

struct {
int a; 
char arr[3];
.
.
.
} data = {
.a = 1
};

数组将隐式初始化为零。