C替代標記
C替代標記指一批C語言常見運算符的可選拼寫。它們實現為C標準函式庫中iso646.h
頭文件內的一組巨集(中國大陸作宏)定義。此標記作為C90標準的修正案於1995年增補。
替代標記允許程序員使用C語言按位和邏輯運算符,原先的標記在一些國際和非QWERTY鍵盤上很難輸入。根據ISO/IEC 646標準實現的頭文件有一些區域性的變化,其中一些用重音字符替換了C運算符使用的標點符號。
巨集(中國大陸作宏)定義
編輯在iso646.h
中定義了11個巨集(中國大陸作宏):
巨集(中國大陸作宏) | 定義為 |
---|---|
and |
&&
|
and_eq |
&=
|
bitand |
&
|
bitor |
|
|
compl |
~
|
not |
!
|
not_eq |
!=
|
or |
||
|
or_eq |
|=
|
xor |
^
|
xor_eq |
^=
|
C++
編輯以上標識符全部是運算符關鍵字,因此不需要再包含頭文件。為了兼容C語言,C++98標準提供了頭文件<ciso646>
,但實際上這是個空文件[1]。然而在Microsoft Visual C++等編譯器中,如果使用這些運算符關鍵字,就必須包含頭文件。
頭文件名稱來源
編輯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
等關鍵字。
參見
編輯參考
編輯- ^ Lischner, Ray. C++ in a Nutshell. O'Reilly Media. 2003: 212. ISBN 0-596-00298-X.