C替代標記
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.