https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html
如何使用 C 从宏函数的参数中获取运算符?
例:
#include <stdio.h>
#define dooo(oooo) (age) oooo=5;
int age=38;
int main(int argc,char** argv)
{
dooo(+);
dooo(*);
printf("===>%dn",age);
return 0;
}
>像+=
这样的运算符是单个标记。因此,要在宏中从部分令牌生成它们,您需要使用令牌连接运算符##
:
#define dooo(oooo) (age) oooo##= 5;
这会将oooo
扩展到(+
或*
(的内容与=
合并到一个令牌中。