在预处理期间,我们通常扫描所有macros
,但我感到困惑的是,预处理器还会生成实际上由词法分析器采用的令牌,并进一步扫描输入文件,
我已经完成了这个link 并且提到预处理标记分为五大类:标识符,预处理数字,字符串文字,标点符号等,只有在预处理状态下生成的标记是否也是如此?
答案 0 :(得分:0)
预处理的结果是令牌流。
大多数令牌是在宏扩展阶段之前生成的,但在宏扩展期间,可以使用stringify(#
)和token-concatenate(##
)运算符创建新令牌。
在预处理之后,需要重新分析许多令牌,并且有些预处理令牌可能无法重新分析为有效令牌。例如,2.3G是预处理号码令牌,但它不对应任何有效的数字令牌。这将导致错误消息。