-qoldpassbyvalue(仅限 C++)
适用的调用
选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
---|---|---|---|---|
-qoldpassbyvalue | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
#pragma :pass_by_value
用途
指定在函数参数中如何传递包含 const
或引用成员的类。
仅当类没有 const
或参考数据成员时, IBM C++ 编译器 V3.6 才使用 "按值传递" ,并且复制构造函数是微不足道的,析构函数是微不足道的。 VisualAge® C++ V5.0 和更高版本的编译器在复制构造函数为微不足道且析构函数为微不足道的情况下使用 "按值传递" ,而不考虑 const
或参考数据成员。 当 -qoldpassbyvalue 生效时,编译器将使用 3.6 行为,以便当包含 const
或引用成员的类作为函数自变量传递时,它不会按值传递。 当 -qnooldpassbyvalue 生效时,编译器将使用新行为,以便当包含 const
或引用成员的类作为函数自变量传递时,它将按值传递。
#pragma pass_by_value 伪指令允许您对特定文件或源代码部分的此选项进行更大的控制。
语法
缺省值
-qnooldpassbyvalue
参数
- compat (仅限 pragma)
- 为后面的代码设置 -qoldpassbyvalue 。 这指示编译器使用先前的行为: 当包含
const
或引用成员的类作为函数自变量传递时,它不会按值传递。 - ansi | 缺省值 (仅限编译指示)
- 为后面的代码设置 -qnooldpassbyvalue 。 这指示编译器使用新行为: 当包含
const
或引用成员的类作为函数自变量传递时,它将按值传递。 - 源 (仅限编译指示)
- 还原为命令行选项指定的设置; 如果未指定任何选项,那么还原为缺省设置 (-qnooldpassbyvalue)。
- pop | reset (仅限编译指示)
- 废弃当前编译指示设置并还原为先前编译指示伪指令指定的设置。 如果未指定先前的编译指示,请还原为命令行或缺省选项设置。
使用量
如果要链接到使用 IBM C++ 编译器 V3.6 或更低版本编译的库,请使用此选项。 否则,当从使用更高版本的编译器编译的模块调用具有 const
或引用类参数类型的函数时,这些函数将产生不正确的行为。 使用 IBM C++ 编译器 V3.6 或更低版本编译的库头应使用 #pragma pass_by_value 伪指令进行保护,以便这些库的用户将获得使用类参数的那些库中的函数的正确调用约定。
预定义的宏
无。