iso646.h

维基百科,自由的百科全书
跳转至: 导航搜索

iso646.hC標準函数庫中的头文件,定义了一批C语言常见运算符的可选拼写。 iso646.h是作为C90标准的修正案于1995年增补的。

宏定义[编辑]

iso646.h中定义了11个宏:

定义为
and &&
and_eq &=
bitand &
bitor |
compl ~
not !
not_eq !=
or ||
or_eq |=
xor ^
xor_eq ^=

C++[编辑]

iso646.h中的11个宏定义在C++语言中全部是运算符关键字,因此不需要再包含iso646.h头文件。为了兼容C语言,C++98标准提供了头文件<ciso646>,但在C++标准中这是个空文件[1]。因此,使用g++编译器时就不需再包含头文件<ciso646>

然而Microsoft Visual C++编译器仍然要求如果使用这些运算符关键字,就必须包含头文件<ciso646>,否则编译报错。如“ error C2065: 'not' : undeclared identifier”。

头文件名称来源[编辑]

iso646.h的名称来源于意图兼容基于ISO/IEC 646字符集的键盘。ISO 646是1972年颁布的一项国际化的7位ASCII标准,规定了12个字符所对应的码位保持对各国标准开放:# $ @ [ \ ] ^ ` { | } ~

因此法国标准AFNOR NF Z 62010-1982把码位0x7c(ASCII码的 | )定义为ù,用法文键盘就难以输入C语言的位或运算符 | ;码位0x7e(ASCII码的 ~)定义为 ¨ (即分音符),法文键盘就难以输入C语言的位非运算符 ~ 。

加拿大法语标准CSA Z243.4-1985中把码位0x5e(ASCII码的 ^ )在定义为É,导致难以输入C语言的异或运算符 ^ 。

为解决上述的C语言源代码输入问题,C语言预处理器(C preprocessor)在扫描处理源文件时,使用三字符组替换为单个字符的办法。三字符组替换方法的可读性显然不如使用and、not等关键字。

参考文献[编辑]

  1. ^ Lischner, Ray. C++ in a Nutshell. O'Reilly Media. 2003. 212. ISBN 0-596-00298-X. 

外部链接[编辑]