根据语言规范,词法元素的定义如下:
token:
keyword
identifier
constant
string-literal
operator
punctuator
preprocessing-token:
header-name
identifier
pp-number
character-constant
string-literal
operator
punctuator
each non-white-space character that cannot be one of the above
为什么在预处理标记级别上数字和字符之间有区分,而在标记级别上只有常量?我看不出这种区分的好处。
192.168.0.1
。然而,这是一个单一的预处理器标记(如果您需要使用##
运算符,则会有所不同)。 - rici0x7E+2
是无效的,不会被重新解析为0x7E + 2
),也不能被连接起来(给定#define MINUS -
,MINUS-x
是两个一元减运算符,而不是前置自减)。 - mafso#define IGNORE(x)
/IGNORE($=>)
),但也有可能永远不会将其转换为标记。 - rici