MACRO扩展到预处理器块

时间:2012-04-03 23:46:34

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

我在每个函数定义之前都在我的项目中使用了预处理器(代码)块来整理日志宏。

#ifdef FC_NAME
#undef FC_NAME
#endif

#define FC_NAME  "myFunctionName"

但这本身看起来有些混乱。

所以,我正在考虑用看似简单的东西替换它并试试这个

#define REDEF_FC_NAME(funcName) #ifdef FC_NAME \
\                                 #undef FC_NAME \
\                               #endif \
\                               #define FC_NAME funcName \

但是这会在宏中表示宏def的错误。那么,有没有办法达到同样的效果?

1 个答案:

答案 0 :(得分:2)

简短的回答是:你不能用宏做到这一点。

可是:

在C ++中,每个函数都有一个预定义的__func__变量。

GCC将此作为C的扩展,因为我确信其他许多编译器都是如此。在Windows上,似乎有__FUNCTION__宏(请参阅http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.71).aspx)。