C 继续接收“初始化者太多”错误
我目前正在尝试为一个赋值编写代码,就在我认为可以完成的时候,我不断得到太多的初始化错误,这是一个赋值,所以它必须是一个int 这是我的结构:C 继续接收“初始化者太多”错误,c,visual-studio,C,Visual Studio,我目前正在尝试为一个赋值编写代码,就在我认为可以完成的时候,我不断得到太多的初始化错误,这是一个赋值,所以它必须是一个int 这是我的结构: struct Address { int streetNumber; char streetName[41]; int apartmentNumber; char postalCode[8]; char city[41]; }; 这是我的代码: int main(void) { struct Address
struct Address {
int streetNumber;
char streetName[41];
int apartmentNumber;
char postalCode[8];
char city[41];
};
这是我的代码:
int main(void) {
struct Address addy = { { 0,"",0,"","" } };
当我删除第二个{}时,它可以工作,但是我正在上载的服务器将不会接受它,除非我使用双{}。下面的初始值设定项是一个问题
struct Address addy = { { 0,"",0,"","" } };
因为结构地址的第一个成员,即streetNumber,不能用{0,0,,}初始化
这就是编译器警告你的
你有一副额外的牙套。将该行更改为:
struct Address addy = { 0, "", 0, "", "" };
对看到该错误的其他行进行类似的更改。在使用双大括号的地方不需要双大括号。结构类型的正确初始值设定项:
struct Address
{
int streetNumber;
char streetName[41];
int apartmentNumber;
char postalCode[8];
char city[41];
};
将是:
struct Address addr1 =
{
319, // Street number
"Honeydew Road", // Street name
207, // Apartment number
"RG13 2PQ", // Postal code
"Reading" // City
};
使用C99和指定的初始值设定项,您可以使用:
struct Address addr2 =
{
.apartmentNumber = 0,
.streetNumber = 719,
.streetName = "Persimmon Way",
.city = "London",
.postalCode = "EC1A 3JN",
};
请注意,对于指定的初始值设定项,顺序并不重要
如果坚持使用双大括号,请注意,可以将常规标量变量的初始值设定项括在大括号中,也可以不括在大括号中:
int i1 = 0; // Legitimate
int i2 = { 0 }; // Also legitimate
但是,在结构初始值设定项中,不能在标量周围使用大括号,但可以在数组周围使用大括号:
struct Address addy = { 0, { "" }, 0, { "" }, { "" } };
尝试将0括在大括号中会导致编译错误。您再次使用了curly 您生成的代码表示addy.streetNumber={0,0,} 它会出错。因为streetNumber的类型只是int,所以不能有不同的值 正确的代码是 结构地址Addy={0,0,0}
祝你过得愉快,伙计。你在帖子中说了一句奇怪的话: 当我删除第二个{}时,它可以工作,但是我正在上载的服务器不会接受它,除非我使用双{} 如果将addy声明为数组,则双{}语法将起作用:
struct Address addy[] = { { 0,"",0,"","" } };
或者,如果声明地址时其成员嵌入到另一个结构中:
struct Address {
struct {
int streetNumber;
char streetName[41];
int apartmentNumber;
char postalCode[8];
char city[41];
};
};
您尝试使用与结构地址不兼容的复合文字来初始化结构
它尝试将复合文字{{0,0,,}与您的结构匹配,因为统一失败,您会得到该错误
如果剪切可以成功统一size=1结构地址数组的不完整或完整的外圆括号,或者如果您的结构地址将嵌套在其他结构中,则统一可能成功
所以你需要写作
struct Address addy = { 0,"",0,"","" }
欢迎来到堆栈溢出。请注意,在这里说“谢谢”的首选方式是,一旦你有足够的声誉,就投票选出好的问题和有用的答案,并接受对你提出的任何问题最有用的答案,这也会给你的声誉带来一点提升。请参阅页面,并将and或作为嵌入式结构
struct Address addy = { 0,"",0,"","" }