在这个宏观包装中展示了什么概念?

一堆代码刚交给我,我对标题中的宏感到困惑。 我无法理解它们的用途:

#define WRAPPER_MACRO(symbol) symbol #define ANOTHER_SYMBOL WRAPPER_MACRO(ANOTHER_SYMBOL) #define PREFIXED_ANOTHER_SYMBOL WRAPPER_MACRO(PFX_ANOTHER_SYMBOL) 

为什么这样? 有什么好处?

编辑:这不是我的代码库中的实际逐字代码,但它具有相同的模板。 我只是替换了宏名称。

正如@Michael所说,我们需要看到真正的宏才能确定。 但没有他们,我愿意做一些可能会帮助你的猜测。

宏嵌套可能是一个字符串化的东西。 这段代码来自我维护的代码库:

 // As per http://gcc.gnu.org/onlinedocs/cpp/Stringification.html: // "If you want to stringify the result of expansion of a macro argument, you // have to use two levels of macros." #ifndef STRINGIFY #define STRINGIFY(s) TOSTRING(s) #define TOSTRING(s) #s #endif 

我也猜测你的PREFIXED_ANOTHER_SYMBOL宏正在做类似的事情,使用###预处理器指令将某个符号添加到你为宏提供的任何内容。