c - 接近初始化结构警告

标签 c

我真的很困惑为什么会出现这个错误。我的代码编译得很好,但我更希望有 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/

相关文章:

c - 如何使用openMP为MPI程序制作makefile?

c - 如何使用静态链接到其中的所有库创建 .so 文件?

c - 从字符串中删除第一个和最后一个字符

c - 两个不同的 C 程序正在访问一个文件

python - Python中如何用子进程实现连续交互对话?

c++ - 使用 sbrk 自定义内存管理

c - 对 'setlinebuf' 的 undefined reference

c - 在 gcc 中禁用可变长度自动数组

c - 在 c 中初始化数组时出现运行时错误

c - 为什么我的 C 代码每次都不起作用?