4-7-2007 07:38
dingzhigang
プリコンパイル済みヘッダー
unix などの環境で開発したソースを、AppWizard が作成したプロジェクトに持ってくるときは、 プリコンパイル済みヘッダーの扱いに注意する。AppWizard はデフォルトで、カテゴリ「プリコンパイル済みヘッダー」の「プリコンパイル済みヘッダーファイルを使用」を チェックし、「このヘッダーまで」のところに "stdafx.h" を指定しているからだ。 この設定だと、.cpp ソースで stdafx.h をインクルードしていない場合、「プリコンパイル済みヘッダーファイルの検索中に予期しないEOFを検出しました」とかいう ふざけたエラーが出てしまう。かといって、Windows に特化していないソースで stdafx.h をインクルードするのは気持ちが悪い。
この不都合は、「プリコンパイル済みヘッダーを自動的に使用」のほうをチェックし、 「このヘッダーまで」のところに "stdafx.h" を指定してやれば回避できるようだ。 コンパイルオプション的には、前者は、/Fp と /Yu の組み合わせで、 後者 (回避策のほう) は、/Fp と /YX の組み合わせとなる。 しかし、マニュアルを見ても、両者の違いがよくわからない。私の感覚から言うと、「自動的に使用」のほうが勝手に訳のわからん動作をしそうで怖いのだが……。