gpt4 book ai didi

c - 声明/初始化结构时每个花括号代表什么? (警告 : missing braces around initializer [-Wmissing-braces])

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:26 73 4
gpt4 key购买 nike

我遇到了以下结构:

static struct {
unsigned char a[5];
} b[] = {
{1,1,1,1,1},
{2,2,2,2,2}
};

但是,如果正在编译它,我会收到以下警告“警告:初始化程序 [-Wmissing-braces] 周围缺少大括号”。

如果我这样修改它:

static struct {
unsigned char a[5];
} b[] = {
{{1,1,1,1,1}},
{{2,2,2,2,2}}
};

然后警告就消失了。 "b[] = "之后的每个花括号代表什么?最里面的花括号明显是?代表char a[5]的初始化。但是其他括号代表什么?明显地?其他花括号之一必须考虑结构数组 b[] 但哪一个?为什么看起来需要第三个花括号,它代表什么?这让我很困惑。

最佳答案

int a[2] = { 1, 2 };

好的。现在:

int a[2][2] = { { 1, 2 } , { 3, 4 } };

对吧? a[0][0] = 1a[0][1] = 2a[1][0] = 3a[1][1] = 4a[0] 是 memcmp 等于 (int[]){ 1, 2 }a[1] 是 memcmp 等于 (int[]){ 3, 4 }.

现在这个:

struct {
int a[2];
} b = { { 1, 2 } };

所以第一个{ }代表结构初始化,里面代表b.a初始化。现在我们制作一个结构数组:

struct b_s {
int a[2];
} b[] = {
{
{ 1, 2 },
},{
{ 3, 4, }
},
};

所以第一个大括号代表数组b[]初始化。第二个用于初始化结构体b[0]。第三个是初始化b[0].a数组。

b[0] 是 memcmp 等于 &(struct b_s){ {1, 2 } }b[0].a 是等于 (int[2]){ 1, 2 } 的 memcmp。 b[0].a[0] 等于 1

关于c - 声明/初始化结构时每个花括号代表什么? (警告 : missing braces around initializer [-Wmissing-braces]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53082677/

73 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com