我正在尝试以
格式定义宏#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>}
答案 0 :(得分:4)
如果你想拥有一个多语句宏体,通常的方法是进行一次迭代do while
循环:
#define SUM(x,y) do {log_var = x; log_var += y;} while (0)