-qrtti和 -qnortti (-fno-rtti)(仅限 C++)

适用的调用

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

类别

对象代码控制

等效编译指示

表 2。 两个类别的调用的编译指示等效项
xlC 和其他旧调用命令 xlclang + + 调用命令
#pragma 选项 rtti

用途

生成运行时类型标识 (RTTI) 信息以进行异常处理并供 typeiddynamic_cast 操作程序使用。

语法

读取语法图跳过可视语法图 -q rtti=alltypetypeinfodynadynamiccastnortti
读取语法图跳过可视语法图 -fno-rtti

缺省值

xlc/xlC 和其他遗留调用 xlclang/xlclang + +
-qnortti -qrtti

参数

all
编译器生成 RTTI typeiddynamic_cast 运算符所需的信息。
类型 | typeinfo
编译器将生成 RTTI typeid 操作程序所需的信息,但不会生成 dynamic_cast 操作程序所需的信息。
dyna | dynamiccast
编译器将生成 RTTI dynamic_cast 操作程序所需的信息,但不会生成 typeid 操作程序所需的信息。

指定不带子选项的 -qrtti 等同于 -qrtti=all

使用量

为了提高运行时性能,禁止使用 -qnortti 设置生成 RTTI 信息。

指定 -qrtti 编译器选项时,您应该了解以下效果:
  • 当指定了 -qrtti 时,虚拟函数表的内容将不同。
  • 将对象链接在一起时,必须使用指定的正确 -qrtti 选项来编译所有相应的源文件。
  • 如果使用混合对象 (为某些对象指定了-qrtti ,为其他对象指定了 -qnortti ) 来编译库,那么可能会发生未定义的符号错误。

预定义的宏

  • -qrtti 生效时, __GXX_RTTI 预定义为值 1; 否则,未定义此值。
  • -qnortti 生效时, __NO_RTTI__ 定义为 1; 否则,将取消定义。
  • -qrtti -qrtti=all 生效时, __RTTI_ALL__ 定义为 1; 否则未定义。

相关信息