-qroptr

适用的调用

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

类别

对象代码控制

等效编译指示

无。

用途

指定常量指针的存储位置。

-qroptr 生效时,常量指针,虚拟函数表和虚拟类型表 将放置在只读存储器中。 当 -qnoroptr 生效时,会将指针,虚拟函数表和虚拟类型表 放置在读/写存储器中。

语法

读取语法图跳过可视语法图 -q noroptrroptr

缺省值

-qnoroptr

使用量

常量指针等同于地址常量。 例如:
int* const p = &n;

-qnoroptr 生效时,您可以更改常量指针,虚拟函数表和虚拟类型表 的值而不生成错误。

-qroptr 可以提高运行时性能,保存存储器并提供共享访问权,但尝试修改只读常量值的代码会生成内存错误。 例如,假定以下代码尝试更改 c1_ptr 指向的地址:
char c1 = 10;
char c2 = 20; 
char* const c1_ptr = &c1;

int main() {
    *(char**)&c1_ptr = &c2; 
}
使用指定的 -qroptr 选项编译此代码将导致运行时发生分段故障。

不应将 -qroptr 用于将成为共享库一部分的已编译代码。

预定义的宏

无。

相关信息