结构赋值给出了“期望的表达式”

时间:2017-01-14 14:54:57

标签: c iar

我有一个定义为

的结构
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 个答案:

答案 0 :(得分:1)

似乎IAR编译器不支持C99复合文字语法。

  • 要么是在C ++模式下使用它,要么不支持此语法
  • 或者您正在使用C99之前的模式(使用--c89命令行选项)。