函数名的C ++宏

时间:2016-04-18 19:53:02

标签: c++ visual-studio-2013 macros

我正在尝试创建一个可用于一般调用CppUnitTestFramework的属性元数据类型的宏。由于每个测试方法的调用约定不同,因为它使用函数的名称,我需要做这样的事情:

#define GetAttributes() CATNAME(CATNAME(CATNAME(__GetMethodMetadata,_),__func__),()))

希望这个宏的使用方式如下:

...
void someFunction(){
    MethodAttributeMetadata* meta = GetAttributes();
    ...
}

像这样处理:

...
void someFunction(){
    MethodAttributeMetadata* meta = __GetMethodMetadata_someFunction();
    ...
}

额外信息:

编译器:Visual Studio Tools 2013(v120)

Microsoft的宏页面:https://msdn.microsoft.com/en-us/library/b0084kay.aspx

这是我能做的吗?

1 个答案:

答案 0 :(得分:0)

我找到了答案,但事实并非如此,你不能这样做。这种方法的问题不是字符串连接,而是 func (或其任何形式)不能在函数外部使用,即使是通过间接层也是如此。