0

次の問題を教えてください。プロジェクト内のさまざまなファイルに含まれるファイル log.cpp があります。log.cpp または log.h を実際に変更せずに、log.cpp に影響を与えるこれらのファイルのいずれかで定義を宣言する必要があります。これどうやってするの?プリコンパイル済みヘッダーを使用したソリューションは受け入れられません。

もう 1 つの質問ですが、静的関数を定義するにはどうすればよいですか? 自分のコードを呼び出した場合CClass::Func、それを別のものにリダイレクトするように定義するにはどうすればよいでしょうか?

4

2 に答える 2

1

ヘッダーに影響を与えたい場合は、その定義をインクルードの前に置くことができます:

#define SOMEDEFINE SOMEVALUE
#include log.h
// May want to remove or change our define here
#undef SOMEDEFINE

これは、他のファイルから cpp を含めたくないため、log.h を含めることを意味していると仮定しています。別々の .h ファイルと .cpp ファイルを持つという考え方は、.h はすべてのコンパイル ユニットが参照するインターフェイスであるのに対し、cpp はコード自体であり、1 回だけコンパイルする必要があり、使用しているコンパイル ユニットによって異なるべきではないということです。それを参照しています。

于 2012-12-05T10:08:14.597 に答える
0

#define私が知っているすべてのC++コンパイラでは、コマンドラインでシンボルを作成できます。通常、これは-Dオプションを使用して行われます。

于 2012-12-05T10:08:25.727 に答える