プリコンパイル済みヘッダーの検索中に予期しないEOFを検出しました

[戻る]
闇絵 2008/02/13(水) 15:51:54
関数ごとにソースファイルを分けたくて、cppファイルを作ったんですが、「プリコンパ
イル済みヘッダーの検索中に予期しないEOFを検出しました」と怒られてしまいました。
#include "stdafx.h"を入れても、「includeファイルを開けません」と怒られてしまい
ます。
プリコンパイル済みヘッダーファイルを使用しないと、不明なプログラマがありました
と言われます。
開発環境は、VC++です。どなたか解決策をお願いします。

たいちう 2008/02/13(水) 16:38:58
> #include "stdafx.h"を入れても、「includeファイルを開けません」
> と怒られてしまいます。

追加したcppファイルと"stdafx.h"は同じフォルダにありますか?
ない場合、ファイル名だけでなく、フルパスで指定して
インクルードするとどうなりますか?

> 開発環境は、VC++です。どなたか解決策をお願いします。

VCのバージョンも書いてください。
それと、MFCを使用しているみたいですが、
ダイアログベースか、SDIか、MDIかを書いてください。

2008/02/13(水) 18:31:50
>>追加したcppファイルと"stdafx.h"は同じフォルダにありますか?
それは無関係だった筈です。
VC++6.0では、PCH作成時には実際に参照されますが、それ以外ではただの
識別子としてしか機能しません。
stdafx.hでPCHを生成し、別ファイルのコンパイル時に別の実在しないファイルを
コンパイルオプションとファイル内でのインクルードに使用しても、正しくコンパイルさ
れます。
6.0以外は調べていませんので挙動が違う可能性は有ります。

完全な推測ですが
・プリプロセッサのIF-ELSEで、stdafx.hのインクルードが破棄されてしまった。
・プリコンパイルヘッダに影響を与えるpragmaを書き込んでしまった。
・分割のときに、必要な部分(各ファイルごとに必要なインクルード指定等)が消え
たり、重複できない部分が重複してしまったりした。
などが気になります。

見通しをよくするためだけの分割なら、分割部分は.hとして保存して、元々有っ
た場所からそのファイルをインクルードする、という力技の方が簡単かもしれませ
ん。
分割の意義の多くは失われますが、面倒ごとは少ないです。

>プリコンパイル済みヘッダーファイルを使用しないと、
>不明なプログラマがありましたと言われます。
これが、#pragmaだとすると、別の問題の弊害のようにも見えます。
プリコンパイル済みヘッダ使用しない場合に、そのエラーの出る行を提示してみて
はどうでしょうか。

闇絵 2008/02/14(木) 12:44:02
[[解決]]
自分でヘッダーファイルを一つ作り、そこに関数のプロトタイプ宣言してcppファイルに
読ませた所解決しました。
開発環境、VC++としか書いてませんでしたね、すいません。VC++2003です。

古いスレッドには追加発言できません。