ひとりSE

ひとりでシステム開発やってます。真面目な業務システムからふざけたゲームまで

C++ でなぜか実行されない行がある

C++ で書いたプログラムで、なぜか実行されない行がある不具合に遭遇し、かなり無駄に時間を費やした経験があります。

    //  ID-色 対応表

    GetColorMap( cmap ); 

 この GetColorMap() がコールされていない、ということが判明するまでイライラしながら結構な時間が経過してるんですが、とにかくそこまでは判明。

 

この2行の中に、重大なバグが潜んでいるんですね・・・

 

このソースコードSJIS コードで書かれてるんです。

GetColorMap() の1行前のコメント行が問題なんですね。

最後の「表」の字。

SJISコードではこの「表」、2byte 目が \ のコードと同じ。

すなわち行の最後に \ があるわけで、改行がエスケープされて次の行が同じ行と扱われてしまう。

// ID-色 対応表    GetColorMap( cmap );

と書いたのと同じ。。

 

わかってみれば当たり前なんですが、これには久々にやられました。

 

この事件以降、// でコメントを書く場合には、必ず最後に無駄にスペースを入れるようになりました。