Структура присваивания дает "ожидаемое выражение"
У меня есть структура, определенная как
typedef struct sCP {
nuint32_t Fr;
DrRange_t DR;
uint8_t B;
} CP_t;
Некоторые предопределенные значения
#define LC4 { 86, { ( ( D5 << 4 ) | D0 ) }, 0 }
#define LC5 { 87, { ( ( D5 << 4 ) | D0 ) }, 0 }
и функция
LMS_t LMCA(uint8_t id, CP_t params)
typedef enum eLoRaMacStatus {
LM_STATUS_OK,
LM_STATUS_BUSY,
LM_STATUS_PARAMETER_INVALID,
LM_STATUS_DEVICE_OFF,
} LMS_t;
В коде он используется как
Lmca( 3, ( CP_t )LC4 );
Lmca( 4, ( CP_t )LC5 );
При компиляции с IAR для ARM Cortex M3 я получаю Error[Pe29]: expected an expression
на обеих линиях.
Если я сделаю
CP_t t = LC4;
Lmca( 3, t );
Это идет хорошо, но у меня та же ошибка, если я тогда пытаюсь позвонить
t = LC5;
Lmca( 4, t );
У кого-нибудь есть идеи, как мне преодолеть эту проблему?
1 ответ
Кажется, компилятор IAR не поддерживает составной литеральный синтаксис C99.
- либо вы используете его в режиме C++, и этот синтаксис не поддерживается как расширение
- или вы используете его в режиме до C99 (с
--c89
опция командной строки).