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 がクソだったりするのは内緒。