在每个函数定义之前,我的项目中都有以下预处理器(代码) block ,以整理日志记录宏。
#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 \
但是这给出了错误,在宏中说 macro def。那么,有没有办法达到同样的效果呢?
最佳答案
简短的回答是:你不能用宏来做到这一点。
但是:
在 C++ 中,每个函数都有一个预定义的 __func__
变量。
GCC 将此作为 C 的扩展提供,我相信许多其他编译器也是如此。在 Windows 上,似乎有 __FUNCTION__
宏(参见 http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.71).aspx)。
关于c++ - 宏扩展到预处理器 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003077/