如何解决在C中填充结构时出现初始化问题
我在用c填充结构时遇到了一个问题。的。我程序的目标是测试文件中的幻数以了解其“类型”。 我的结构看起来像这样:
struct mn {
char code[6];
char name[30];
};
然后我填充结构:
struct mn all_mn[7] = {
[0].code = {75,80,0},[0].name = "ZIP",[1].code = {0x37,0x7A,0xBC,0xAF,0x27,0x1C},[1].name = "7z",[2].code = {0x25,0x50,0x44,0x46,0x2D,[2].name = "PDF",[3].code = {0x49,0x33,[3].name = "MP3",[4].code = {0x49,0x49,0x2A,0x00,[4].name = "TIFF(little endian)",[5].code = {0x4D,0x4D,[5].name = "TIFF(big endian)",[6].code = {0x23,0x21,[6].name = "shebang"};
我实际上没有错
struct mn all_mn[X] = {[X].code ....}
但是我的海湾合作委员会说:
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,我不知道为什么。 如果有人可以,我会很高兴。给我解释一下。
解决方法
struct mn all_mn;
不再是数组,您不能使用索引:[0].name = {'Z','I','P'},
正确的初始化是:struct mn all_mn = {.name = {'Z','P'}};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。