gpt4 book ai didi

c - 初始化多个结构时出现“预期错误 ";"”

转载 作者:行者123 更新时间:2023-11-30 18:49:34 24 4
gpt4 key购买 nike

我已经用 typedef 定义了一个结构,并在其下面立即使用 typedef 结构同时声明并初始化了我想要的变量。

当我尝试编译代码时,没有与“hi_aud”相关的错误消息,但其余结构会出现错误“error:”;“预期的'。该数组还会显示此警告,以及“错误:“}”预期”。

我正在使用 Hi-Tech C 编译器 v.,它使用 C90 ANSI C 标准。

/* Due to C90, do not change order of vars in struct or else code will explode
*/
typedef struct alarm {
const uint_fast32_t pattern[];
const uint_fast8_t size;
void (*toggle)(void);
void (*off)(void);
bool on;
bool init;
uint_fast8_t pos;
uint_fast16_t start;
uint_fast8_t overflows;
};

static struct alarm hi_aud {
[108, 27, 108, 20, 108, 12, 108, 5],
sizeof(hi_aud.pattern) / sizeof(*hi_aud.pattern),
&sounder_toggle,
&sounder_off,
};

static struct alarm med_aud {
[255, 50, 50, 255],
sizeof(med_aud.pattern) / sizeof(*med_aud.pattern),
&sounder_toggle,
&sounder_off,
};

static struct alarm lo_aud {
[255],
sizeof(lo_aud.pattern) / sizeof(*lo_aud.pattern),
&sounder_toggle,
&sounder_off,
};

static struct alarm hi_vis {
[255],
sizeof(hi_vis.pattern) / sizeof(*hi_vis.pattern),
&hi_vis_toggle,
&hi_vis_off;
};

static struct alarm med_vis {
[255],
sizeof(med_vis.pattern) / sizeof(*med_vis.pattern),
&med_vis_toggle,
&med_vis_off,
};

static struct *alarms = {&hi_aud, &med_aud, &lo_aud, &hi_vis, &lo_vis};
static uint_fast8_t alarms_siz = sizeof(alarms) / sizeof(*alarms);

编辑当我使用“{}”括号初始化数组时,出现另一个错误“错误:声明中没有标识符”。当我使用“[]”括号时,不会发生这种情况。

最佳答案

在 strcut 的定义中,元素的定义由 分隔; 不是 不是问题:}

  • 在 C99 之前,初始化列表可能不会以 , 结尾。 因 C99 对枚举的更改而感到困惑。; 总是错误的。并且变量和它的初始化器之间需要有一个 =

  • 要初始化结构体的数组成员,请使用大括号 ({}),而不是中括号 ([])。

  • const uint_fast32_t pattern[]; 不是完整的数组定义。

    改用const uint_fast32_t pattern[MAX_SOMETHING];

关于c - 初始化多个结构时出现“预期错误 ";"”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42489216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com