Seaside Laboratory

Posts

KFM を VC++ でコンパイル

久しぶりに Visual Studio の入っているノート PC を引っ張り出したので、ついでに KFM をコンパイルしてみた。

暫く VC++ 用のプロジェクトファイルを更新していなかったので、関連ファイルを最新のものに差し替え、コンパイルしたところ、謎の多重定義エラーが発生した。

原因は、

#include "CHoge.h"

と書くべきところを、

#include "CHoge.cpp"

とタイプミスしていたせいだった。

通常、インクルードガードはヘッダーファイルにしか書かないので、ソースファイルをインクルードすると多重定義の嵐で大変なことになる。つーか、なんで BCC はこんなコードを通してしまうんだ。

これ以外にも標準ライブラリの依存関係に違いがあって、BCC だと適当なヘッダーファイルを読み込んだだけで math.h にある関数を使えてしまうが、VC++ だと明示的に math.h を読み込まないとコンパイルエラーになる。

無料のコンパイラと比較するのもアレだが、両者を比べると軍配は VC++ に上がるかな。ただ、VC++ だと for 内で変数を宣言できなかったり、STL の list がクソだったりするのは内緒。