Trigraph が存在する理由

公開:2010-12-30 21:23
更新:2020-02-15 04:36
カテゴリ:c++

本の虫さんのC++0x本査読と並行してC++0xの規格書にも目を通していて気がついたのがTrigraph。
この存在を私は規格書を読むまで知らなかった。

Trigraphとは2文字のクエスチョンマーク(??)+1文字の合計3文字で1文字を表すものである。

Trigraph文字
??=#
??/(バックスラッシュ)
??'^
??([
??)]
??!|
??<{
??>}
??-~

使用例(規格書より引用)

??=define arraycheck(a,b) a??(b??) ??!??! b??(a??)
becomes
#define arraycheck(a,b) a[b] || b[a]

使い方はわかるのだがこのTrigraphはなぜ必要なのだろうか。
規格書には理由は何も書いていない。

調べてみたらTrigraphで入力できる文字コードはISO-646規格の各国で任意指定できる部分であることがわかった。
違う文字を指定している国でもTrigraphでソースコードを書けるようにしているのであった。

日本ではバックスラッシュがそうなるね。まあそのまま\で入力してしまっているけど。

C++ テンプレート完全ガイド (Programmer’s SELECTION)