VC++ 6.0 プリコンパイル済みヘッダーについて

このQ&Aのポイント
  • VC++ 6.0でプリコンパイル済みヘッダーを使用するとビルドエラーが発生する問題があります。
  • 「プリコンパイル済みヘッダーを使用しない」に設定するとビルドが成功することが確認されています。
  • 質問の詳細な内容を知りたい場合は、ご質問内容を共有いただくことでより具体的な回答が可能です。
回答を見る
  • ベストアンサー

VC++ 6.0 プリコンパイル済みヘッダーについて

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

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

プリコンパイルヘッダというのは、ヘッダファイル解析時間の削減を目的として、ヘッダ部をコンパイラが独自にキャッシュするものです。 VCの場合、この設定を有効にした全てのソースの先頭で、必ず「設定で指定したプリコンパイルヘッダ」をincludeしていなければいけない仕様です。 デフォルトのプリコンパイルヘッダはstdafx.hですので、各ソースの先頭の命令は #include "stdafx.h"から始まる必要があります。 # 仕組み的には、stdafx.hの内容としてコンパイル済みのデータを持ってきて処理するためらしいですが…うっとうしいのは確か。 で、コンパイラコンパイラが生成するソースにはこれらが無いためエラーになります。 そして、使わない設定にすると、この必要が無くなってビルドが通ります。 # 一応、ソースの先頭にincludeを追加してもビルドは成功するはずです。

wweerr
質問者

お礼

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

関連するQ&A

  • VC++でCのプログラムを混在させるには

    VC++で拡張子がCのプログラムを挿入、プロジェクト、ファイルの追加で追加 すると atal error C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。 のエラーが出ます。 ここでファイル名の拡張子をCPPにすると、追加はできますが、 拡張子Cのままでプロジェクトに追加するにはどうすればいいでしょうか?

  • VC++ ヘッダ・ソースのみで再構築は可能ですか?

    C++で開発されたアプリを再構築する事になりましたが、納品時のヘッダとソースファイルしかありません。プロジェクトファイルやビルド環境のファイルも何もありません。まさしくヘッダとソース(cpp)しかない状況で、開発するために再構築してデバックできる環境を整える事になりました。ちなみに、このアプリはC++言語で、開発ツールはVS6で開発されたそうです。 どのたか、再構築する方法を教えていただけないでしょうか? また、VC2010などの最新のVCで開発したいと思っておりますがそれも可能でしょうか? 過去にC言語で電話システムの開発経験はありますが、Windowsでのアプリ開発の経験はほとんどありません。 以上、よろしくお願いいたします。

  • VC++2010の「#include <」

    VC++ で、他人の作ったソースコードをビルドして実行してみています。 (WinPcapのデベロッパ向けのライブラリを使った、サンプルプログラムです。) VC++自体、あまり理解が深くないのですが、 「#include <」まで書くと、「ヘッダファイル名が表示される」プロジェクトと、「そうではない」プロジェクトがあります。 「そうではない」方のプロジェクトだと、ビルド時にincludeするライブラリが足りないとか、そんな感じのエラーが表示されます。 ぱっと見の違いは、「ヘッダファイル名が表示される」プロジェクトの場合は、 ソリューションエクスプローラに、「外部依存関係」というフォルダのショートカットがあり、ライブラリがどっさりあります。 「そうではない」プロジェクトについても、「#include <」で、ヘッダファイルを表示してくれるようにしたいのですが、どの様にすればよいのでしょうか?★ プロジェクトのプロパティの、 C++>プリプロセッサ>プリプロセッサの定義 リンカー>入力>追加の依存ファイル はどちらのソースも同じにしたのですが…。

  • SQLの構文解析

    プログラミング初心者ですがよろしくお願いします。 SQL文の字句、構文解析を行いたいと思っていて、SQL文が書かれたテキストファイルを入力とし、構文木もしくはそれににた情報を出力できるようなものがほしいです。 どこかにSQL構文のパーサーのソースコードライブラリは無いでしょうか?できればフリーがいいです。 C言語やflex,bisonなどのソースコードがあればいいのですが探しても見つかりません。どなたかご存じありませんか?よろしくお願いします。

  • VC++でCORBAを使用するには

    VC++でCORBAを使用する方法がわからなくて困っています。 idlをコンパイルしてできたxxxC.CPPというファイルをSourceFilesに追加してリビルドをかけると、「fatal error C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。」というエラーがでます。 初心者のため、やり方があっているのかどうかもわからない状態です。

  • VC++でwin32APIを作っているのですが・・・

    こんにちは。私はwin32APIを勉強しているc言語初心者です。 私はMicrosoft Visual C++ 2008を使ってc言語のwin32APIをプログラミングしているのですが、独学でやっているので物凄く邪道なwin32APIプログラミングをしているような気がするのです。 ・c言語のプログラムを書いて、C++のwin32APIプロジェクトとしてビルドする。 ・ヘッダーファイルにwin32API関数がなかったので、自分のwindowOSからwin32API関数を探し出してVC++2008のなかのincludeフォルダ内にコピー&ペーストして使えるようにした。 これって邪道ですか?一応何の問題もなくwin32APIプログラムが作れるのですが、もっと正規なやり方があるでしょうか。回答よろしくお願いします。

  • VC++2008でインポートライブラリのスタティックリンクの設定

    VC++2008でインポートライブラリのスタティックリンクの設定 従来のVC++6.0ではプロジェクトのビルド時にインポートライブラリをスタティックリンクさせる場合 「プロジェクト」メニューから「設定」項目を選択し、「プロジェクトの設定」ウィンドウを表示させて、 「リンク」タブをクリックして表示されるページの「オブジェクト/ライブラリモジュール」欄の先頭に、 MyDll.lib(例)とスペースを1つ入力していました。末尾のスペースはMyDll.libとkernel32.libを区切るために必要でした。 これをVC++2008で実現するためにはどの様にしたらいいのですか? VC++2008の「プロジェクト」メニューを探しても「プロジェクトの設定」ウィンドウがありません。

  • VCでヘッダが見えないエラー

     Vista上でVisualStudio2008を使っています。c:\Program Files下にWinPcapをインストールして、ユーザホームのドキュメントフォルダ下にVCのワークスペースを作成してあります。  この状態で、WinPcapのサンプルプロジェクトを作ってプログラム実行すると、  fatal error C1083: include ファイルを開けません。'pcap.h': No such file or directory というエラーが出ます。VCは管理者権限で起動しています。ヘッダファイルのあるディレクトリの読み取り権限はあります。  他に何を確認すべきか教えてください。

  • VC++でC言語を学習(初心者)

    市販の本で、C言語を学ぼうと思っております。環境はVC++なのですが、 プログラミングに至るまでで、つまずいてしまいました...。 プロジェクト→Win32 Console Application→ファイル→C++ソースファイル、 とすると、Cのプログラムではビルド時にエラーが起きてしまいます。 VC++の本では載っていなかったので、質問をさせて頂きました。 よろしくお願い致します。 また、何か参考記事等ありましたら、合わせて教えて下さい。

  • VCでストップウォッチを作りたいのですが、うまくいきません。

    こんにちは。私は30代の男性です。 「Visual C++ の初歩(http://www.gulf.or.jp/~damayan/vc/visualc2.htm)」というサイトで、ストップウォッチプロジェクトファイルがダウンロードできたので、コピペしてコンパイルしようと思ったのですが、うまくいきませんでした。 いつも下記のようなエラーメッセージが表示されます。ヘッダーファイルに「stdafx.h」は置いてあるのですが、やり方が間違っているのでしょうか? ちなみに、ダウンロードした「release」ファイルの中のexeファイルを起動すれば、実行はされます。「自分が新規でプロジェクトファイルを作り、ダウンロードしたソースをコピーしてコンパイルを試みても、うまくいかない。」という話です。 よきアドバイスを頂ければと思います。 宜しくお願い致します。 ----- ビルド開始: プロジェクト: abc, 構成: Debug Win32 ------ コンパイルしています... abc.cpp c:\documents and settings\my documents\visual studio 2005\projects\abc\abc\abc.cpp(111) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? ビルドログは "file://c:\Documents and Settings\My Documents\Visual Studio 2005\Projects\abc\abc\Debug\BuildLog.htm" に保存されました。 abc - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========