《c和指针》笔记--trigrph

 在ANSI标准中,定义了“三字母词”,或者成为“三联符序列”,英文为"trigraph sequences"。目的主要是为了在一些特定的字符集中,比如一些七位代码集中,解决一些特定字符的输入问题。

         也许是由于这些字符集我们基本上用不到,所以在大多数C语言的书籍中,我们都看不到对“三字母词”的讲解。这里资料来源于参考ANSI C99标准(即传说中的《American National Standards Institute for Programming Languages-C》 1999年,我们习惯简称为“C99”)。

        截止到现在,“三字母词”有且仅有9个,分别为: 

三字母词对应的字符
??=#
??([
??)]
??<{
??>}
??//
??!|
??'^
??-~

       就这9个,没有其他的三字母词。源代码中的“三字母词”,在编译阶段会被替换为“对应的字符”。对于以“?”开头的字符序列,如果不能与上面9个匹配,编译器将保持原状;一旦匹配,编译器就会做替换。

但是,新的编译器对于trigrph已经给出了特殊的处理,本次试验用的gcc版本是:gcc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2


#include <stdio.h>

int main(void){
        printf("123??)");
        return 0;
}
使用gcc trigrph.c进行编译。

出现如下warning:

trigrph.c: In function 'main':
trigrph.c:4:13: warning: trigraph ??) ignored, use -trigraphs to enable [-Wtrigraphs]


执行结果是:

123??)


使用如下命令编译:

gcc -trigraphs trigrph.c

无warning,执行结果是:

123]


所以对于自己不确定的东西还是亲自试一下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值