0

次のようなプリコンパイル済みヘッダーで何かを定義するとします。

#define __BUILD_MAC__

次に、ヘッダーファイルで次のようにします。

#ifdef __BUILD_MAC__
    typedef void*   HINSTANCE;
#endif

これはうまくいくはずです。しかし、なぜかそうではありません。コンパイルすると、HINSTANCEが型に名前を付けていないというエラーが発生するためです。

これらの定義を利用可能にするために他に何かする必要がありますか?

4

2 に答える 2

1

プリコンパイル済みヘッダーの前の定義はすべて無視されます。コンパイラレベルのスイッチまたは次の方法で定義を行うことを検討してください。

構成プロパティ -> C/C++ -> プリプロセッサ -> プリプロセッサ定義

詳細については、MSDN を参照してください。

プリコンパイル済みヘッダーを使用すると、コンパイラは hdrstoppragma の前にあるすべてのプリプロセッサ ディレクティブ (プラグマを含む) を無視します。このようなプリプロセッサ ディレクティブで指定されたコンパイルは、プリコンパイル済みヘッダー ファイルの作成に使用されたコンパイルと同じである必要があります。

GCC プリコンパイル済みヘッダーに関しては、次のように異なります。

最初の C トークンが表示されると、プリコンパイル済みヘッダーは使用できません。プリコンパイル済みヘッダーの前にプリプロセッサ ディレクティブを配置できます。の前に C トークンがない限り、別のヘッダー内からプリコンパイル済みヘッダーを含めることもできます #include

于 2010-04-05T23:14:57.467 に答える
-1

.pch をビルドするために実際に使用されているファイル内で、.pch に含まれる最後のヘッダーの前に d がある__BUILD_MAC__ことを確認してください。#define

于 2010-04-05T23:15:45.627 に答える