规范列出了pp令牌的类别为2.5,但包含最后一个类别
每个非白色空格字符不能是上述
之一
我很难找到一个示例,其中捕获这样一个字符的pp标记产生一个有效的C ++程序。如2.5解释的那样,程序可能包含一个狂野的"
或'
令牌,但行为未定义。有没有有效程序的例子?
答案 0 :(得分:1)
我认为$
和@
属于该类别(假设这些字符位于源字符集中)。两者都是有效的pp令牌,但不是有效的令牌,并且将在后面的翻译阶段被诊断为语法错误(除非它们已被#if
,#ifdef
等删除。)。
我不知道这种pp-token会产生有效令牌的任何情况。
答案 1 :(得分:1)
您可以将迷路标记串行化为有效性。其实;你已经在a previous question中做到了这一点!
杂散字符标记也可能出现在由条件编译跳过的组中,即
#if 0
@ \ ` €
#endif
请注意,在所有这些情况下,唯一的杂散字符标记是反斜杠,因为诸如\u0040
的UCN不形成标识符,并且UCN是标识符中的特殊情况,并且仅反斜杠是“可以构成预处理令牌的最长字符序列,“u0040
是一个单独的标识符。