来自C11标准草案N1570,§6.4/ 3:
[...]预处理令牌的类别是:标题名称,标识符, 预处理数字,字符常量,字符串文字, 标点符号和单个非空白字符表示没有 词法匹配其他预处理令牌类别。 69) 如果是'或者 “字符与最后一个类别匹配,行为未定义。 [...]
69)在翻译阶段4(见6.10.3.3)内部使用了另一类别,地方标记;它不会出现在源文件中。
(强调我的。)
我找不到一种有效的方法来编写包含有效预处理令牌"
的程序。
答案 0 :(得分:2)
您突出显示的文字说明,如果使用' 或" ,那么它将是一个非空白字符预处理令牌,然后程序无效(即"行为未定义")。因此,没有自尊的编译器会允许你这样做;编译器当然没有义务做任何你可能认为合理的明确未定义的行为。