[我知道在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字符表中不存在的字符是:
# [ ] { } \ | ~ ^
取自ANSI C Rationale, [2.2.1.1 Trigrah sequences]
这也是引入三字母组合的原因(在同一部分中有进一步解释)。>>