new*_*gre 0 c macros stringification c-preprocessor
我有以下宏来定义一个特殊命名方案后的新函数:
#define CREATE_HOOK_STUB( func ) void ##func_STUB() { /* some code*/ }
Run Code Online (Sandbox Code Playgroud)
但是,预处理器始终连接void
,##func_STUB
但我显然希望它保留该位置的空白.
我知道我可以在前面添加一些字符串##func_STUB
,但这不是我想要的.我该如何解决这个问题?
我认为你真正想要的是更接近:
#define CREATE_HOOK_STUB( func ) void func##_STUB() { /* some code*/ }
Run Code Online (Sandbox Code Playgroud)
但是你也应该看看这个链接的SO答案,它有一些关于令牌粘贴操作符行为的其他详细信息:
当您使用令牌粘贴('##')或字符串化('#')预处理运算符时,需要注意的一点是,必须使用额外的间接级别才能在所有情况下正常工作.
如果你不这样做,传递给令牌粘贴操作符的项目本身就是宏,你会得到可能不是你想要的结果......
归档时间: |
|
查看次数: |
3046 次 |
最近记录: |