どこかのだれかへ

職業ゲームプログラマ。気になったニュースのピックアップや開発日記などを書いています。

コメント最後のドットとダメ文字

同じチームにコメントの最後にドットを付ける人がいて気になったので調べたんですが、これはダメ文字対策らしいです。
ShiftJISにおいて文字の2バイト目が制御文字(バックスラッシュとか)とかぶっていると、コンパイラがミスって想定外の動作になってしまう場合があります。

たとえば、C++で「// ○○機能」というコメントがあったとします。
"能"はダメ文字で、2バイト目が0x5cでバックスラッシュと認識されてしまいます。
C++でバックスラッシュは次の行も同じ行として扱われるので、次の行もコメント化されてしまいます。

たまにネタになる、「コメントを消すとバグる」という元ネタはこれの事なのかな?
そしてこのダメ文字問題対策の1つとして最後に必ずドット(.)を付けることで、次の行がコメントにならないようにしている、ようです。

ただ今はそんな小手先のテクニックは使わずに、ソースコードUTF-8化しろ!の一言で済むと思います。 僕が関わっているプロジェクトはソースコードUTF-8なのでダメ文字問題が発生することはありません。

ちなみにVC++の場合は、ダメ文字問題は発生しません。コンパイラが良い感じに解釈してくれているようです (VC++はデフォルトShifJISなのでそれでこの問題発生したら辛いですね)
試していませんが、gccとかだと発生するんですかね。