在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'}};

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...