我想扩展这些C预处理程序行:
#define _POUND_ #define
_POUND_ _FALSE 0
_FALSE
扩展,所以最后一行(即_FALSE)
扩展为0。我知道递归CPP不可能直接实现,但可以做到。不幸的是,我不确定我是否完全遵循此链接中介绍的逻辑。
我认为我需要强制进行额外的评估,但是在这种情况下(例如,我尝试过并失败了),我不知道该怎么做。
你能帮我吗?
如注释中多次指出的,不支持您要查找的内容。这是标准必须说明的内容:
甲预处理指令由预处理标记,其满足以下约束的序列组成:所述序列中的第一令牌是#预处理令牌(在翻译阶段4的开始)或者是源文件中的第一个字符(后任选白色不包含换行符的空格)或紧随包含至少一个换行符的空格的空格。
(C2011,6.10 / 2;已添加重点)
翻译阶段4是执行预处理指令的阶段,因此,在阶段4进行宏扩展不能导致真正的预处理指令的创建。宏可以扩展为具有预处理指令形式的文本,但是此类文本实际上不能成为指令。
的确,对宏扩展产生的文本进行了重新扫描以查找更多的宏以进行扩展,但是该过程并不涉及识别尚不存在的预处理指令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句