構造体を初期化し、値を構造体変数に代入しようとしています。
私の構造体:
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 コンパイラを使用しています。このコードをコンパイルすると、コンパイラはError #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};
しかし、繰り返しますが、これは特にきれいなコードや方法ではありません。