关于C/C++的trigraphs和Digraphs

仔细看了看wiki

当初因为iso646的标准,部分国家打不出# ~ ^ 之类的字符,所以使用??加一个字符替代。

TrigraphEquivalent
??=#
??/\
??'^
??([
??)]
??!|
??<{
??>}
??-~

后来在c99加入了digraphs

DigraphEquivalent
<:[
:>]
<%{
%>}
%:#

然后目前,gcc编译trigraphs 要使用-trigraphs 且未使用会警告。

如果-ansi 会默认加上-trigraphs。

c++或者c中的iso646.h还支持这个

TokenEquivalent
%:%:##
compl~
not!
bitand&
bitor|
and&&
or||
xor^
and_eq&=
or_eq|=
xor_eq^=
not_eq!=

所以当初lez大佬发现的那个东西是有名字的。。。

 

在c++11,trigraphs被建议不使用,c++17中,被弃用了。

 

参考:https://en.wikipedia.org/wiki/Digraphs_and_trigraphs

转载于:https://www.cnblogs.com/be-the-std/p/7728029.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值