(C/C++)如何创建一个接受增量运算符的宏

Geo*_*nis -2 c c++ macros c-preprocessor

为了使我的问题精确,我想创建一个接受变量++并将其与另一个变量粘贴的宏.在代码中:

#define MYMACRO(A, OP) /* .... */
Run Code Online (Sandbox Code Playgroud)

然后,如果我写在源文件中

MYMACRO(this->var, ++)
Run Code Online (Sandbox Code Playgroud)

预处理器应粘贴代码

this->var++;
Run Code Online (Sandbox Code Playgroud)

当我尝试将宏定义为A ## OP时,它提供以下错误:

粘贴"++"和"var"不会提供有效的预处理令牌

有可能做我正在尝试的事情吗?

提前谢谢你的答案

Bar*_*mar 6

您不需要##令牌粘贴操作符,因为您没有尝试将参数组合到单个令牌中.只需使用:

#define MYMACRO(a, op) (a)op;
Run Code Online (Sandbox Code Playgroud)

  • 我很确定你会更愿意回答这个问题,因为*`#define MYMACRO(a,op)((a)op)`而不是(但是OP想要的有点傻,包括宏中的分号) . (4认同)