5

内容を制御できるヘッダー ファイルがあります。

さらに、さまざまな実装が派生したインターフェイス I1 (他のファイルで定義されている) があります。これらの実装がこのヘッダー ファイルをインクルードすることを禁止したいと考えています。そのため、コンパイル時にファイルが含まれている場合はコンパイルが失敗し、そうでない場合は通常どおり続行されます。

だから私はヘッダーファイルとインターフェース定義を(他のファイルに)持っています。コンパイル中に、インターフェイスの実装が特定のヘッダー ファイルをインクルードすることを禁止したいと考えています。

どうすればそれを達成できるかについての提案はありますか? 使用できる巧妙なテンプレート/前処理のトリックはありますか?

4

1 に答える 1

10

ヘッダー ファイル内:

#ifndef FOO_IMPLEMENTATION_USE_ONLY
#error This file is for inclusion in the FOO implementation only
#endif

それを含めることになっているファイルでは:

// Define this ONLY in the Foo implementation files
#define FOO_IMPLEMENTATION_USE_ONLY
于 2013-09-16T09:15:24.860 に答える