gcc の仕様

C でプログラムを書いていて、開発環境 & 普段のデバッグ環境は Windows なのだが、Linux 版も同一ソースコードでビルドできるようにしているので、Windows 側で共有ディレクトリを作って、開発用の Linux マシンからマウントして make して動作チェックしていたのだが、Linux 上でだけ再現する、どうしても解決できないバグがあった。
色々試しているうちに、Windows 上のディレクトリをそのままマウントしているのでソースコード文字コードが Shift-JIS であることに気がついた。
ソースコードのプログラムコード中では、当然日本語は使用はていないが、コメントでは普通に使用している。そこで、
// ○○が実行不可能
などというコメントを書いていて、次の行もコメントとして見なされていた。
この場合、文法エラーにもならずコンパイルは正しく通るが、実行するとおかしくなって、しかもその原因が見つかりにくいので大変苦労する。
以下の文字を gcc でコメント行の最後の文字として使ってはならない。
表予ソ十―暴構能貼申噂饅兔薌欺圭蚕曾箪禄
浬喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔鷭祥ЫⅨ