c++ - pp-tokens 还剩下哪些字符?

标签 c++ c-preprocessor language-lawyer

规范在 2.5 列出了 pp token 的类别,但包含最后一个类别

each non-white-space character that cannot be one of the above

我很难找到一个示例,其中捕获此类字符的 pp token 会产生有效的 C++ 程序。正如 2.5 所解释的那样,一个程序可能包含一个狂野的 "' 标记,但随后的行为是未定义的。是否有任何有效程序的示例?

最佳答案

我相信 $@ 属于这一类(假设这些字符在源字符集中)。两者都是有效的 pp-tokens,但都不是有效的 tokens,并且会在稍后的翻译阶段被诊断为语法错误(除非它们已被 #if#ifdef 等)。

我不知道这样的 pp-token 会产生有效 token 的任何情况。

关于c++ - pp-tokens 还剩下哪些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650479/

相关文章:

c++ - n叉树的最低共同祖先

c++ - 为类模板忽略了用户定义的转换运算符(对于非模板则不然)

c++ - Enterprise Architect - 单独的代码生成 header 和实现

c++ - init-declarators 的完整表达式的定义

c++11 - Clang 3.5和3.6之间的过载分辨率更改是否正确还是错误?

c++ - 使用预处理器生成默认值

c - 打印宏的名称和值

c - 强制编译器在预处理期间进行算术计算

c - 多平台支持、预处理程序或与各个库的链接

实现是否可以将提示视为实际语句?