web-dev-qa-db-ja.com

CとC ++が混在するプリコンパイル済みヘッダー

Cのプロジェクトでプリコンパイル済みヘッダーを使用していますが、.CPPファイルをプロジェクトに統合しています。

ここにエラーがあります:

Error   1   fatal error C1853: 'Debug\MuffinFactory.pch' precompiled header
file is from a previous version of the compiler, or the precompiled header is C++
 and you are using it from C (or vice versa)    
c:\users\blake\desktop\projects\muffinfactory\source\main.cpp   1

プロジェクトでコンパイルする必要があるのは1つの.CPPだけですが、コンパイル時間を節約するためにプリコンパイル済みヘッダーが本当に必要です(Windows.hなど)。

これを行うにはプロジェクトをどのように整理すればよいですか?

21
James Linden

そのため、その単一のファイルにはプリコンパイル済みヘッダーを使用しないでください。

.cppファイルなので、とにかく個別のコンパイルオプションがあります。

19
Bo Persson

プロジェクトで2つのプリコンパイル済みヘッダーを作成できる場合があります。各ソースファイルには、プリコンパイル済みヘッダーを使用するか、プリコンパイル済みヘッダーを生成するかを決定するプロパティがあります。2つの異なるソースを設定してヘッダーを生成してみてください。

5
Mark Ransom

ズウムの答え

Not using precompiled headers

Zuuumへの謝罪は、彼の答えが露骨に引き裂かれたためですが、7年後もコメントとして埋められています。 Bo Perrsonは何をすべきかを教えてくれます

そのため、その単一ファイルにはプリコンパイル済みヘッダーを使用しないでください。
とにかく、それは別々のコンパイルオプションを持っています。

zuuumは私たちに方法を教えてくれます

追加情報:ソリューションエクスプローラーから「プリコンパイル済みヘッダー」を使用しないファイルを選択します
右クリック
プリコンパイル済みヘッダーオプションの下で、[プリコンパイル済みヘッダーを使用しない]を選択します
–ズウム2月19日'12月18:34

私は小さな編集を行いました-それらは直接の引用ではありません。私の変更の理由は、CまたはC++ファイルを特定のケースでプリコンパイル済みヘッダーの使用から除外したい場合があるためです。 BoはC++を想定しています。これは質問への直接の回答です。 ZuuumはCを想定していますが、それは私と私のイラストにも当てはまります。実際にはどちらかです。

メニューのオプションの場所がビジュアルスタジオのリリースごとに異なることは理解できますが、いらいらしますが、これが現在のビジュアルスタジオ(2019)のメニュー項目の場所です。

1
Ivan

別のC++プリコンパイル済みヘッダーファイルを作成してみてください(他のファイルのコピーであるMuffinFactoryCpp.hなど)。 「プリコンパイル済みヘッダー」のプロジェクト設定を確認し、この新しいヘッダーファイルをC++ソースファイルのプリコンパイル済みヘッダーとして使用します。

1
zdan

ここでエラーを調べたところ、このスレッドが見つかりました。しかし、試行錯誤の結果、最近保存したファイルがすべてではないことが問題であることがわかりました。 Visual Studioは、一緒に添付されているファイルの保存日について少し気難しいようです。

すべてのソースファイルでCtrl + Sを押すと、問題が解決しました。

0
Brandon Nolet