C程序语法“({statement;});”被keil报告为错误

时间:2014-05-06 17:07:43

标签: c

我正在尝试以

格式定义宏
#define SUM(x,y) ({log_var = x; log_var += y;})

void main(void)
{
    unsigned int log_var;
    SUM(10,20);
}

ARMCC对其进行编译会引发错误"期望表达式"但是使用GCC编译并不会抛出错误。

是不是ARMCC中不允许使用语法({<statements>});,还是有其他原因?

删除括号后,同样消失。即{<statements>}

1 个答案:

答案 0 :(得分:4)

如果你想拥有一个多语句宏体,通常的方法是进行一次迭代do while循环:

#define SUM(x,y) do {log_var = x; log_var += y;} while (0)