繁体   English   中英

宏扩展到预处理器块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM