Pau*_*nta 26 c++ c-preprocessor
我想做这样的事情:
class SomeClass { };
GENERATE_FUNTION(SomeClass)
Run Code Online (Sandbox Code Playgroud)
该GENERATE_FUNCTION
宏我想定义的名字是由宏参数确定的函数.在这种情况下,我希望它定义一个函数func_SomeClass
.怎么办?
K-b*_*llo 33
#define GENERATE_FUNCTION(Argument) void func_##Argument(){ ... }
Run Code Online (Sandbox Code Playgroud)
更多信息请访问:http: //en.wikipedia.org/wiki/C_preprocessor#Token_concatenation
正如大家所说的那样,您可以使用令牌粘贴在宏中构建名称,方法是将##
需要的位置放在一起加入令牌.
如果预处理器支持可变参数宏,则还可以包括返回类型和参数列表:
#define GENERATE_FUNCTION(RET,NAM,...) RET func_##NAM(__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)
..so,例如:
GENERATE_FUNCTION(int,SomeClass,int val)
Run Code Online (Sandbox Code Playgroud)
..将扩展到:
int func_SomeClass(int val)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33174 次 |
最近记录: |