C预处理器中的单个非空白字符

时间:2017-01-29 15:18:02

标签: c c-preprocessor

来自C11标准草案N1570,§6.4/ 3:

  

[...]预处理令牌的类别是:标题名称,标识符,   预处理数字,字符常量,字符串文字,   标点符号和单个非空白字符表示没有   词法匹配其他预处理令牌类别。 69) 如果是'或者   “字符与最后一个类别匹配,行为未定义。 [...]

     

69)在翻译阶段4(见6.10.3.3)内部使用了另一类别,地方标记;它不会出现在源文件中。

(强调我的。)

我找不到一种有效的方法来编写包含有效预处理令牌"的程序。

1 个答案:

答案 0 :(得分:2)

您突出显示的文字说明,如果使用' " ,那么它将是一个非空白字符预处理令牌,然后程序无效(即"行为未定义")。因此,没有自尊的编译器会允许你这样做;编译器当然没有义务做任何你可能认为合理的明确未定义的行为。