我在每个函数定义之前都在我的项目中使用了预处理器(代码)块来整理日志宏。
#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的错误。那么,有没有办法达到同样的效果?
答案 0 :(得分:2)
简短的回答是:你不能用宏做到这一点。
可是:
在C ++中,每个函数都有一个预定义的__func__
变量。
GCC将此作为C的扩展,因为我确信其他许多编译器都是如此。在Windows上,似乎有__FUNCTION__
宏(请参阅http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.71).aspx)。