码迷,mamicode.com
首页 > 编程语言 > 详细

C语言中的三字母词

时间:2014-05-01 19:18:12      阅读:485      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   ext   color   strong   int   string   2014   http   

C语言中的三字母词(trigraph)
ANSI C标准中,定义了9三字母词(trigraph),三字母词就是几个字符的序列,合起来表示另一个字符。三字母词使C语言环境可以在缺少一些必需字符的字符集(比如,一些非常老式的键盘上没有[]{}#\^~|)上实现。也许是由于这些字符集我们基本上用不到,所以在大多数C语言的书籍中,我们都看不到对三字母词的讲解。下图列出了9个三字母词以及它们所代表的的字符。
源代码中的“三字母词”,在编译阶段会被替换为“对应的字符”。对于以“?”开头的字符序列,如果不能与上面9个匹配,编译器将保持原状;一旦匹配,编译器就会做替换。 下面是我们很容易犯的一个错误(摘自《C和指针》):

1
2
3
4
5
6
#include <stdio.h>
 
int main(int argc,char **argv)
{
printf("Delete file (are you really sure??):");
}


1
main.c|5|warning: trigraph ??) ignored, use -trigraphs to enable [-Wtrigraphs]|

bubuko.com,布布扣


添加编译选项后

bubuko.com,布布扣

bubuko.com,布布扣

注意:由于编译器的种类各样,对ANSI C的支持也不一样,所以可能会有些C编译器不处理“三字母词”,会将它们当做普通的字符串来处理。 以上测试是在VC++ 6.0下进行的,对于GCC编译器,需要在编译的时候添加选择"-ansi"或者"-trigraphs"。 






C语言中的三字母词,布布扣,bubuko.com

C语言中的三字母词

标签:style   blog   class   code   ext   color   strong   int   string   2014   http   

原文地址:http://www.cnblogs.com/chen-/p/3702841.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!