我正在尝试初始化一个结构,并将值分配给结构变量。
我的结构:
typedef struct { q31_t A0; q31_t A1; q31_t A2; q31_t State[3]; q31_t Kp; q31_t Ki; q31_t Kd; } arm_pid_instance_q31;
当我尝试声明和初始化变量时,我使用指定的初始化程序:
arm_pid_instance_q31 pitch_pid_instance ={ .A0 = 0, .A1 = 0, .A2 = 0, .State ={0,0,0}, .Kd = 0, .Ki = 0, .Kp = 0 };
我将 Keil µVision4 和 ARM C 编译器用于嵌入式项目。编译此代码时,编译器返回错误 #29: Expected an expression。该错误发生在初始化代码的每一行。
我读到这是用 ANSI C99 编写时要走的路,但这在我的情况下不起作用。如何在 ANSI C99 中初始化结构
我知道我可以编写“坏”代码:
arm_pid_instance_q31 pitch_pid_instance; pitch_pid_instance.A0 = 0; etc...
但...
有小费吗?
更新:以下代码有效:
arm_pid_instance_q31 pitch_pid_instance = {0,0,0,0,0,0,0,0,0};
但同样,这不是一个特别漂亮的代码或方法。