【发布时间】:2012-02-18 03:11:10
【问题描述】:
我在使用以下宏时遇到问题,我发现令牌粘贴运算符 (##) 占用了 static 和返回类型之间的空间:
#define MY_FUNCTION(aReturnType) static ##aReturnType MyFunction() { }
所以预处理器正在转动这个:
MY_FUNCTION(bool)
进入这个:
staticbool MyFunction() { }
导致奇怪的编译错误。
我想出了在 static 关键字周围加上括号的想法:
// This works but is kind of weird
#define MY_FUNCTION(aReturnType) (static) ##aReturnType MyFunction() { }
有没有更好的解决方案?
【问题讨论】:
-
吃空白是这个操作员的工作描述的一部分。
标签: c++ macros concatenation c-preprocessor