一堆代码刚交给我,我对标题中的宏感到困惑。我无法理解它们的用途:
#define WRAPPER_MACRO(symbol) symbol
#define ANOTHER_SYMBOL WRAPPER_MACRO(ANOTHER_SYMBOL)
#define PREFIXED_ANOTHER_SYMBOL WRAPPER_MACRO(PFX_ANOTHER_SYMBOL)
为什么这样?有什么好处?
编辑:这不是我的代码库中的实际逐字代码,但它具有相同的模板。我只是替换了宏名称。
答案 0 :(得分:1)
正如@Michael所说,我们需要看到真正的宏才能确定。但是没有他们,我愿意做一些可能会帮助你的猜测。
宏嵌套可能是stringification。这段代码来自我维护的代码库:
// 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
宏正在执行与this类似的操作,使用#
或##
预处理程序指令将某个符号添加到任何内容中你喂宏。