我真的很困惑为什么会出现这个错误。我的代码编译得很好,但我更希望有 0 个警告。在搜索了一下 stackoverflow 之后,没有人拥有与我使用的相同的结构类型。下面是我的代码片段(这些都是虚构的名字)
如果有帮助,我的 MAXCONTACTS 设置为 5
struct Contact conNum[MAXCONTACTS] = { { {"Rick", { '\0' }, "Grimes" },
{11, "Trailer Park", 0, "A7A 2J2", "King City" },
{"4161112222", "4162223333", "4163334444" } },
{
{"Maggie", "R.", "Greene" },
{55, "Hightop House", 0, "A9A 3K3", "Bolton" },
{"9051112222", "9052223333", "9053334444" } },
{
{"Morgan", "A.", "Jones" },
{77, "Cottage Lane", 0, "C7C 9Q9", "Peterborough"},
{"7051112222", "7052223333", "7053334444" } },
{
{"Sasha", {'\0'}, "Williams" },
{55, "Hightop House", 0, "A9A 3K3", "Bolton"},
{"9052223333", "9052223333", "9054445555" } },
};
编辑:这是我的结构声明
// Structure type Name declaration
struct Name {
char firstName[31];
char middleInitial[7];
char lastName[36];
};
struct Address {
int streetNumber;
int apartmentNumber;
char street[41];
char postalCode[8];
char city[41];
};
struct Numbers {
char cell[11];
char home[11];
char business[11];
};
struct Contact {
struct Name name;
struct Address address;
struct ``Numbers numbers;
};
最佳答案
您的 struct Address
包含两个 int
字段,后跟两个 char
数组:
struct Address {
int streetNumber;
int apartmentNumber;
char street[41];
char postalCode[8];
char city[41];
};
但你不按顺序初始化它们:
{11, "Trailer Park", 0, "A7A 2J2", "King City" },
除非您使用命名初始值设定项,否则必须按顺序指定字段。先写门牌号,然后是公寓号,然后街道:
{11, 0, "Trailer Park", "A7A 2J2", "King City" },
对其他三个做同样的事情。
关于c - 接近初始化结构警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53582241/