在 C 宏中强制使用空格?
-
11-09-2019 - |
题
我有以下宏来定义一个遵循特殊命名方案的新函数:
#define CREATE_HOOK_STUB( func ) void ##func_STUB() { /* some code*/ }
然而,预处理器总是连接 void
和 ##func_STUB
但我显然希望它保留该位置的空白。
我知道我可以在前面添加一些字符串 ##func_STUB
, ,但这不是我想要的。我该如何解决这个问题?
解决方案
我认为你真正想要的是更接近:
#define CREATE_HOOK_STUB( func ) void func##_STUB() { /* some code*/ }
但你也应该看看 这个链接的答案 其中有一些关于令牌粘贴操作符行为的附加细节:
使用标记粘贴(“##”)或字符串化(“#”)预处理运算符时需要注意的一件事是,必须使用额外的间接级别才能使它们在所有情况下都能正常工作。
如果您不这样做,并且传递给标记粘贴运算符的项目本身就是宏,您将得到的结果可能不是您想要的......
不隶属于 StackOverflow