[英]MACRO expansion to block of preprocessors
在每个 function 定义之前,我的项目中都有以下预处理器(代码)块,以整理日志记录宏。
#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++ 中,每个 function 都有一个预定义的__func__
变量。
GCC 将此作为 C 的扩展提供,我相信许多其他编译器也是如此。 在 Windows 上,似乎有__FUNCTION__
宏(请参阅http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.71).aspx )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.