dポイントプレゼントキャンペーン実施中!

プログラミング初心者です。

構文解析のためにbisonとFlexを勉強しています。
これらを、VC++ 6.0で使用できるように設定し、いざビルドを
行ったところエラーが発生しました。
どうやら原因はメニューの「プロジェクト(P)」→「設定」→
「C/C++」→カテゴリ「プリコンパイル済みヘッダー」で
「プリコンパイル済みヘッダーを使用する」にチェックが入っていた
ためで、これを「プリコンパイル済みヘッダーを使用しない」にした
ところうまくビルドすることができました。

ですが、どうしてうまくいったのかがわかりません。お詳しい方がいらっしゃいましたら、どうかお教えください。

A 回答 (1件)

プリコンパイルヘッダというのは、ヘッダファイル解析時間の削減を目的として、ヘッダ部をコンパイラが独自にキャッシュするものです。


VCの場合、この設定を有効にした全てのソースの先頭で、必ず「設定で指定したプリコンパイルヘッダ」をincludeしていなければいけない仕様です。
デフォルトのプリコンパイルヘッダはstdafx.hですので、各ソースの先頭の命令は #include "stdafx.h"から始まる必要があります。
# 仕組み的には、stdafx.hの内容としてコンパイル済みのデータを持ってきて処理するためらしいですが…うっとうしいのは確か。

で、コンパイラコンパイラが生成するソースにはこれらが無いためエラーになります。
そして、使わない設定にすると、この必要が無くなってビルドが通ります。
# 一応、ソースの先頭にincludeを追加してもビルドは成功するはずです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2008/05/11 17:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!