使用C从宏功能的参数中获取操作符

时间:2018-01-26 17:47:20

标签: c function macros

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;
}

1 个答案:

答案 0 :(得分:3)

+=等运算符是单个标记。因此,要在部分令牌的宏中生成它们,您需要使用令牌连接运算符##

#define dooo(oooo) (age) oooo##= 5;

这会将oooo扩展到(+*)的内容与=合并为一个令牌。