C程序语法;({语句;})&引用;keil将其报告为错误
我正在尝试以以下格式定义宏C程序语法;({语句;})&引用;keil将其报告为错误,c,C,我正在尝试以以下格式定义宏 #define SUM(x,y) ({log_var = x; log_var += y;}) void main(void) { unsigned int log_var; SUM(10,20); } 由ARMCC编译该表达式会抛出一个错误“应为表达式”,但使用GCC编译不会抛出该错误 是语法({})在ARMCC中是不允许的,或者有其他原因吗 删除括号后,相同的内容将消失。i、 e{}如果您想要一个多语句宏体,通常的方法是在循环时进行一次迭代do
#define SUM(x,y) ({log_var = x; log_var += y;})
void main(void)
{
unsigned int log_var;
SUM(10,20);
}
由ARMCC编译该表达式会抛出一个错误“应为表达式”,但使用GCC编译不会抛出该错误
是语法({})代码>在ARMCC中是不允许的,或者有其他原因吗
删除括号后,相同的内容将消失。i、 e{}
如果您想要一个多语句宏体,通常的方法是在循环时进行一次迭代do:
#define SUM(x,y) do {log_var = x; log_var += y;} while (0)
这是一个GCC扩展。但他也可以只使用括号,不是吗?@Mauren如果OP在宏“call”后添加分号,会导致空语句,并且不是所有代码验证程序都喜欢空语句。哦,我没有注意到这一点。