在不涉及血淋淋的细节的情况下,我想使用#define
宏将扩展为#include
但“#”符号使预处理器感到困惑(因为它认为我想引用一个参数。)
例如,我想做这样的事情:
#define MACRO(name) #include "name##foo"
并这样使用它:
MACRO(Test)
这将扩展到:
#include "Testfoo"
不起眼的 # 符号导致预处理器崩溃。 MinGW 给我以下错误:
'#' is not followed by a macro parameter
我想我需要转义 # 符号,但如果可能的话我不需要。
是的,宏确实是邪恶的......
It is可以将哈希令牌插入到预处理的令牌流中。您可以按如下方式进行操作:
#define MACRO(hash, name) hash include name
MACRO(#,"hello")
——扩展到:
# include "hello"
However,该标准明确排除了对此类行是否存在预处理指令的任何进一步分析 [cpp.rescan]:
生成的完全宏替换的预处理标记序列不会作为预处理指令进行处理,即使它类似于预处理指令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)