Seaside Laboratory

Posts

KFM を VC++ でコンパイル

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

VC++ 用のプロジェクトファイルを更新していなかった関係で大量のエラーが出るのは想定内なので、関連ファイルを最新のものに差し替え、再度コンパイル。しかし、謎の多重定義エラーが発生して悩む。原因は、

#include "CHoge.h"

と書くべきところを、

#include "CHoge.cpp"

とタイプミスしていたせいだった。普通、インクルードガードはヘッダにしか書かないので、ソースコードをインクルードすると多重定義の嵐で大変なことになる。つーか、なんで BCC だとこんなソースを正常にコンパイルできるんだ。

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

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