#pragma hashome(仅限 C++)

适用的调用

表 1. 接受给定编译指示的调用
编译指示 (pragma) xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
#pragma hashome      
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

对象代码控制

用途

通知编译器,指定的类具有由 #pragma ishome 指定的主目录模块。

此类的虚拟函数表以及某些内联函数不会作为静态函数生成。 相反,它们将在指定了 #pragma ishome 的类的编译单元中作为外部对象引用。

语法

读取语法图跳过可视语法图#pragmahashome (class_nameallinlines )

参数

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() {}

相关信息