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

參見

編輯

參考

編輯

外部連結

編輯