#pragma ishome

C++ に適用

説明

#pragma ishome ディレクティブは、指定したクラスのホーム・モジュールが現行のコンパイル単位であることをコンパイラーに通知します。ホーム・モジュールは、仮想関数テーブルなどの項目が保管されている場所です。項目は、コンパイル単位の外側から参照されると、そのホームの外部には生成されません。これにより、アプリケーション用に生成されるコードの量を削減することができます。

構文


構文図

ここで、


className ホームが現行のコンパイル単位になるクラスのリテラル名です。

#pragma hashome と一致しない #pragma ishome がある場合は、警告が出されます。

以下の例では、コード・サンプルをコンパイルすることにより、仮想関数テーブル、およびコンパイル単位 b.o ではなく、a.o のみの S::foo() の定義が生成されます。これにより、アプリケーション用に生成されるコードの量が削減されます。

// a.h
struct S
{
   virtual void foo() {}
 
   virtual void bar();
};
 
 
 
// a.C
#pragma ishome(S)
#pragma hashome (S)
 
#include "a.h"
 
int main()
{
   S s;
   s.foo();
   s.bar();
}
 
 
 
// b.C
#pragma hashome(S)
#include "a.h"
 
void S::bar() {}
 

関連参照

汎用プラグマ
#pragma hashome IBM Copyright 2003