最近看内核代码的时候,发现一个不太理解的宏定义,大致格式如下
#define FUNC(x,y) ({x=1; y=2;})
这里的效果是,给 x,y 分别赋值,并且把最后一条语句的结果作为 FUNC 的返回值。这个宏应该怎么解释呢?( ) 和 { } 分别代表什么意义?是怎么起到有返回值效果的?
这个定义中,如果没有 ( ) 符号,则不会有返回值效果
查看 《C++ Primer》中的 “运算符优先级表” 中对 ( ) 符号的功能解释,只有三种,感觉都匹配不上
1、函数调用
2、类型构造
3、类型转换