Я пытаюсь инициализировать структуру и присвоить значения переменным структуры.
Моя структура:
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: Ожидается выражение. Ошибка возникает в каждой строке кода инициализации.
Я читал, что это способ писать в 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};
Но опять же, это не особенно красивый код или способ сделать это.
Foo foo = (Foo){ .x = y, .., .. };
- person c00kiemon5ter   schedule 07.08.2012