2

私はこの問題に遭遇しました、通常あなたは私に理由を尋ねるでしょう、それで私はあなたがちょうど私に答えることができるように最初に説明します、私は少なくとも500.000行のソースに取り組んでいますが、今は私のソースの1つです(.cpp )作成したばかりのファイルは、「StdAfx.h」であるプリコンパイル済みヘッダーを追加してはなりません。この場合、プロジェクトのプリコンパイル済みヘッダー設定を編集してはなりません。明らかに、新しいファイルにstdafxを含めずにプロジェクトをコンパイルしようとした場合です。 C1010で壊されるでしょう、私が試したのはこれです

StdAfx.h:

#ifndef __ABC123
//do all your includes
#endif

MyFile.cpp:

#define __ABC123
#include "StdAfx.h"
#undef __ABC123

これは機能しませんが、stdafx.hにはまだファイルが含まれています。この.cppファイルにstdafx.hインクルードを含めることができないのは、stdafxの一部のインクルードがこのcppのインクルードと多数の競合を持っているためです。stdafxインクルードを変​​更できないのは、他の何千ものファイルがそれを使用しているためです。これに対処するにはどうすればよいですか?

4

1 に答える 1

2

不可能。あなたはここの隅に自分自身を塗りつぶしました。私に説明させてください。

PCHは、プロジェクト全体で使用することを目的としています。すべての翻訳ユニットにはPCHが含まれていると予想されます。

この動作はオーバーライドできますが、問題の翻訳ユニットのプロジェクト設定を介してのみオーバーライドできます。プロジェクト設定を編集してはならないことをすでに述べたので、逃げ道をなくすことができます。

これが本当に必要で、解決策がない場合は、PCH以外のコードを独自のプロジェクトに移動するなどの抜本的な手順を実行することを検討します。

于 2012-09-27T22:53:35.010 に答える