我知道,在iso646.h的头中,定义了以下11个marco常量,以提供对按位运算符和逻辑运算符的替代描述:
and是&&的宏。
and_eq是&=的宏。
bitand是&的宏。
bitor是|的宏。
compl是~的宏。
not是!的宏。
not_eq是!=的宏。
or是||的宏。
or_eq是|=的宏
xor是^的宏。
xor_eq是^=的宏。
但是我什么时候需要使用这些替代宏呢?
iso646.h的头文件中为按位运算符和逻辑运算符使用替代宏发布于 2020-02-02 14:43:56
如果您的编码没有实现完整的ASCII汇辑,您应该使用它:
C从ASCII代码集派生其汇辑。不幸的是,ASCII汇辑并不是所有其他常用字符集的子集,欧洲的普遍做法也不是实现ASCII的全部,而是使用其核对序列的某些部分作为特殊的民族字符。 解决办法是国际商定的“汇辑”,据此可以确定C的国际代表性。ISO定义了这样一个标准: ISO 646描述了ASCII的一个不变子集。 C所使用的ASCII汇辑中没有出现在ISO 646汇辑中的字符是: # [ ] { } \ | ~ ^
摘自http://port70.net/%7Ensz/c/c89/rationale/b.html#ISO-646-2-2-1-1
正如@chqrlie所指出的,在1980年代,这是一个需要考虑的重要问题,但今天的重要性要小得多。
这也是引入曲线图的原因(在同一节中将进一步解释)。因此,当使用非ASCII编码时,iso646.h中的宏将被它们的曲线图版本所取代。
https://stackoverflow.com/questions/60027096
复制相似问题