一堆代码刚刚交给我,我对标头中的宏感到困惑。我无法理解它们的用途:
#define WRAPPER_MACRO(symbol) symbol
#define ANOTHER_SYMBOL WRAPPER_MACRO(ANOTHER_SYMBOL)
#define PREFIXED_ANOTHER_SYMBOL WRAPPER_MACRO(PFX_ANOTHER_SYMBOL)
为什么要这样做?有什么好处?
编辑:这不是我的代码库中的实际逐字代码,但它具有相同的模板。我刚刚替换了宏名称。
正如@Michael 所说,我们需要查看真正的宏才能确定。但如果没有它们,我愿意做一些可能对你有帮助的猜测。
宏嵌套可能是字符串化 http://gcc.gnu.org/onlinedocs/cpp/Stringification.html事物。这段代码来自我维护的代码库:
// 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 http://en.cppreference.com/w/cpp/preprocessor/replace, 使用#
or ##
预处理器指令将某个符号添加到您提供给宏的任何内容之前。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)