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++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等關鍵字。

參見

編輯

參考

編輯

外部連結

編輯