【发布时间】:2020-10-17 11:19:53
【问题描述】:
我在用 c 填充我的结构时遇到了问题。这。我的程序的目标是测试文件中的神奇数字以了解它们的“类型”。 我的结构看起来像这样:
struct mn {
char code[6];
char name[30];
};
我这样做填充结构:
struct mn all_mn[7] = {
[0].code = {75, 80, 0, 0, 0, 0},
[0].name = "ZIP",
[1].code = {0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C},
[1].name = "7z",
[2].code = {0x25, 0x50, 0x44, 0x46, 0x2D, 0},
[2].name = "PDF",
[3].code = {0x49, 0x44, 0x33, 0, 0, 0},
[3].name = "MP3",
[4].code = {0x49, 0x49, 0x2A, 0x00, 0, 0},
[4].name = "TIFF(little endian)",
[5].code = {0x4D, 0x4D, 0x00, 0x2A, 0, 0},
[5].name = "TIFF(big endian)",
[6].code = {0x23, 0x21, 0, 0, 0, 0},
[6].name = "shebang"};
我实际上没有错误
struct mn all_mn[X] = {[X].code ....}
但我的 gcc 说:
tp1_nico.c:24:5: error: missing initializer for field 'name' of 'struct mn' [-Werror=missing-field-initializers]
24 | [0].name = {'Z', 'I', 'P'},
| ^
tp1_nico.c:19:14: note: 'name' declared here
19 | char name[30];
| ^~~~
对于 struct 中的每个 .name,我不知道为什么。 如果有人可以,我会很高兴。给我解释一下。
【问题讨论】:
-
你的 gcc 是什么版本?我的 gcc 没有抱怨。
-
它是 gcc 7.5.0。
标签: c struct gcc-warning