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("===>%d\n",age);
return 0;
}
答案 0 :(得分:3)
+=
等运算符是单个标记。因此,要在部分令牌的宏中生成它们,您需要使用令牌连接运算符##
:
#define dooo(oooo) (age) oooo##= 5;
这会将oooo
扩展到(+
或*
)的内容与=
合并为一个令牌。