-qroptr
适用的调用
选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
---|---|---|---|---|
-qroptr | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无。
用途
指定常量指针的存储位置。
当 -qroptr 生效时,常量指针,虚拟函数表和虚拟类型表 将放置在只读存储器中。 当 -qnoroptr 生效时,会将指针,虚拟函数表和虚拟类型表 放置在读/写存储器中。
语法
缺省值
-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 用于将成为共享库一部分的已编译代码。
预定义的宏
无。