我知道在的标头中iso646.h
,定义了以下十一个marco常数以提供按位和逻辑运算符的替代描述:
and
是的宏&&
。
and_eq
是的宏&=
。
bitand
是的宏&
。
bitor
是的宏|
。
compl
是的宏~
。
not
是的宏!
。
not_eq
是的宏!=
。
or
是的宏||
。
or_eq
是一个宏 |=
xor
是的宏^
。
xor_eq
是的宏^=
。
但是何时需要使用这些替代宏?
iso646.h
?如果您的编码未实现完整的ASCII格式,则应使用它:
C从ASCII代码集派生其库。不幸的是,ASCII库不是所有其他常用字符集的子集,并且在欧洲广泛使用的做法也不是全部实现ASCII,而是将其整理序列的某些部分用于特殊的国家字符。
解决方案是国际商定的曲目,可以定义C的国际代表。ISO已定义了这样的标准:ISO 646描述了ASCII的不变子集。
C使用的ASCII库中的字符,而ISO 646库中不存在的字符是:
# [ ] { } \ | ~ ^
正如@chqrlie所指出的那样,这是1980年代要考虑的重要问题,但如今已不那么重要了。
这也是引入三字母组合的原因(在同一部分中有进一步说明)。因此,当使用非ASCII编码时,这些宏将由中的Trigraph版本替换iso646.h
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句