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

时间:2014-04-07 06:55:19

标签: c macros

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

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

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

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

1 个答案:

答案 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类似的操作,使用###预处理程序指令将某个符号添加到任何内容中你喂宏。

相关问题