0

在每个函数定义之前,我的项目中都有以下预处理器(代码)块,以整理日志记录宏。

#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 的错误。那么,有没有办法达到同样的效果呢?

4

1 回答 1

2

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

但:

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

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

于 2012-04-03T23:48:56.567 回答