
1.6
識別子
13
表1-2 トライグラフ
トライグラフ 等価文字
??( [
??) ]
??< {
??> }
??= #
??/ \
??! |
??' ^
??- ~
トライグラフを使えば、7ビットASCIIに対応する1991年 ISO/IEC 646で定義された文
字だけでCプログラムを書ける。コンパイラのプリプロセッサがコンパイルの第1段階でト
ライグラフを等価な文字に置き換える。これは、ダイグラフと異なり、トライグラフが文字
定数、文字列リテラル、コメント、プリプロセッサ指令など、どこにあっても等価な文字に
置き換えられることを意味する。例えば、プリプロセッサは、次の文の2番目と3番目の疑
問符をトライグラフの開始と解釈する。
printf("Cancel???(y/n) ");
したがって、この行は、意図しないプリプロセッサ出力になってしまう。
printf("Cancel?[y/n) ");
このような3文字連をトライグラフとして解釈されないようにするには、疑問符をエス
ケー
プシーケンスで表す。
printf("Cancel\?\?\?(y/n) ")
疑問符2つの次の文字が表1-2にない文字であれば、それはトライグラフではないので置
き換わることはない。
ダイグラフとトライグラフの他に、記号の代替として、
C
の論理演算子と
ビット演算子の代替表現を定義するマクロはヘッダファイル
iso646.h
に含
まれる。
&&
の
and
や
^
の
xor
など。
16
章を参照。
1.6
識別子
識別子という用語はCプログラムで定義される変数、関数、マク ...