c++ - 宏扩展到预处理器 block

标签 c++ c visual-c++ macros

在每个函数定义之前,我的项目中都有以下预处理器(代码) 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/

相关文章:

c - C 中整数数组的动态内存分配和自由函数

.net - C++ IEnumerable <int> = class-> method();在WinForms中

c++ - 使用类类型作为映射键值

c++ - xcode 6.3.2 外部构建

c++ - 如何使用Boost Spirit x3 Kleene Star?

c - RAM 内存中的段

c++ - 在带有排除 C++ 的 switch 案例中使用范围

c - 带 void 的动态数组内存分配**

user-interface - 将 GUI 集成到控制台应用程序中

windows - 为捕获过滤器添加音频功能