c99 standard 5.2.1.1 Trigraph sequences
2 示例以下源代码行
printf("Eh???/n");
变为(在替换三元组序列后 ??/)
printf("Eh?\n");
据说它会替换三字母序列,但它不是。
正在打印"Eh???/n"
我错过了什么吗?
在 gcc 中默认禁用三元组。如果您使用 gcc,则编译-trigraphs
以启用三元组:
gcc -trigraphs source.c
printf 中的??/
是一个三元字符,它是 C 预处理器的一部分。
如果使用 启用 trigraph gcc -trigraphs source.c
,它将转换??/
为\
. 您的代码将如下所示:
printf("Eh???/n"); // Before enable trigraph
printf("Eh?\n"); // After enable trigraph
您可以访问https://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C了解更多信息。
C ??!??! 的可能重复 运营商呢?