-qobjmodel(仅限 C++)

适用的调用

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

类别

可移植性和迁移

等效编译指示

#pragma 对象模型

用途

设置要用于结构、联合体和类的对象模型。

对象模型在以下方面有所不同:
  • 虚拟函数表的布局
  • 虚拟基类支持
  • 名称管理方案

语法

操作语法

读取语法图跳过可视语法图 -qobjmodel= classicibm

编译指示语法

读取语法图跳过可视语法图#pragmaobject_model( classicibmpop )

缺省值

-qobjmodel=classic

参数

经典
使用与 IBM® C++ 编译器的 V3.6 兼容的对象模型。 也可以使用 -qobjmodel=compat的旧子选项名称来指定此子选项,但在编译器的未来发行版中可能会除去对此旧子选项名称的支持。
ibm
使用 VisualAge® C++ V5.0引入的对象模型。 用此对象模型编译的对象将使用较少的内存,因此在 深入继承虚拟基本类时具有更好的性能。
流行 (仅限编译指示)
废弃当前编译指示设置并还原为先前编译指示伪指令指定的设置。 如果未指定先前的编译指示,请还原为命令行或缺省选项设置。

使用量

All classes in the same inheritance hierarchy must have the same object model.

预定义的宏

  • -qobjmodel=classic#pragma object_model (classic) 生效时 (缺省值) , __OBJECT_MODEL_CLASSIC__ 预定义为 1; 否则未定义。
  • -qobjmodel=ibm#pragma object_model (ibm) 生效时, __OBJECT_MODEL_IBM__ 预定义为 1; 否则未定义。

示例

要使用 ibm 对象模型编译 myprogram.C ,请输入以下命令:
xlc++ myprogram.C -qobjmodel=ibm