gpt4 book ai didi

c - C中的结构初始化问题

转载 作者:行者123 更新时间:2023-12-03 23:25:03 25 4
gpt4 key购买 nike

我似乎在设置结构内数组的值时遇到问题,编译器吐出一个无意义的错误:

expected primary-expression before '{' token



我知道一个结构必须“存在”才能接受值,并且它作为一个指针存在。我希望你向我解释我做错了什么以及如何实现我的目标。
struct EventCheckData {
unsigned long refresh_time;
unsigned long last_execution_ms; //Can also serve to delay at startup
byte signal_type;
};

struct ClockData {
struct EventCheckData event_array[4];
byte event_count;
unsigned long last_absolute_time;
UISignal *warning_signals;
};



void ResetClock(UISignal *warning_signal, struct ClockData *clock_data, unsigned long absolute_time) {
if(SignalCheckValue(warning_signal, RESET_CLOCK, 1)) {
extern volatile unsigned long timer0_overflow_count;
timer0_overflow_count = 0;
clock_data->last_absolute_time = absolute_time;
clock_data->event_count = 3;
(clock_data->event_array)[0] = { .refresh_time = 3000UL, .last_execution_ms = 0UL, .signal_type = WATER_PUMP_ON};
// clock_data->event_array[1] = {10000UL, 0UL, EXPORT_LOG};
// clock_data->event_array[2] = {100000UL, 0UL, EXTERNAL_CONNECTION};
SignalSet(warning_signal, RESET_CLOCK, 0);
}
}

谢谢
保罗·内维斯

最佳答案

(clock_data->event_array)[0] = { .refresh_time = 3000UL, .last_execution_ms = 0UL, .signal_type = WATER_PUMP_ON};不是初始化。是赋值。

并且您不能在赋值中使用初始化语法。

使用 C99,您应该能够使用复合文字,例如

(clock_data->event_array)[0] = (struct EventCheckData){ .refresh_time = 3000UL, .last_execution_ms = 0UL, .signal_type = WATER_PUMP_ON};

关于c - C中的结构初始化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7517267/

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