#pragma hashome(仅限 C++)
适用的调用
| 编译指示 (pragma) | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
#pragma hashome |
✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
用途
通知编译器,指定的类具有由 #pragma ishome 指定的主目录模块。
此类的虚拟函数表以及某些内联函数不会作为静态函数生成。 相反,它们将在指定了 #pragma ishome 的类的编译单元中作为外部对象引用。
语法
参数
- class_name
- 要在外部引用的类的名称。 class_name 必须是类,并且必须对其进行定义。
- Allinlines
- 指定应该将 class_name 中的所有内联函数都引用为外部函数。
使用量
如果存在没有匹配 #pragma hashome的 #pragma ishome ,那么将生成警告。
示例
在以下示例中,编译代码样本将生成虚拟函数表和
S::foo() 的定义,仅用于编译单元 a.o,而不用于 b.o。 这将减少为应用程序生成的代码量。// 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() {}
