6.4.8 预处理数
TIP
预处理数不等于“合法数字常量”。它只是预处理阶段的一类最长匹配记号,后面未必能成功转成整数常量或浮点常量。
预处理数(pp-number)是预处理记号的一类。它的设计目标,是让预处理阶段先把“看起来像数字的一长串字符”整体吞下,再由后续阶段判断它是不是合法常量。
因此,某些在后续阶段并不是合法整数常量或浮点常量的写法,在预处理阶段仍然会先被识别成一个预处理数。
这正是最长匹配规则的直接结果。例如:
1Ex会整体成为一个预处理数;- 即使把它拆成
1与Ex也许能形成别的有效结构,词法上仍不会这样拆。
宏替换、条件包含等预处理机制在很大程度上都依赖这类记号的存在;如果把它误认为“已经是合法数值常量”,就会误解很多预处理行为。
NOTE
“预处理数”是一个过渡性的词法类别。只有当它在后续翻译阶段还能成功落入整数常量或浮点常量的词法形式时,才会进一步成为真正的数值常量记号。