在这个宏观包装中展示了什么概念?
一堆代码刚交给我,我对标题中的宏感到困惑。 我无法理解它们的用途:
#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
宏正在做类似的事情,使用#
或##
预处理器指令将某个符号添加到你为宏提供的任何内容。