-qpriority(仅限 C++)
适用的调用
| 选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
| -qpriority | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
| xlC 和其他旧调用命令 | xlclang + + 调用命令 |
|---|---|
| #pragma 个选项优先级, #pragma 个优先级 | 无 |
用途
指定静态对象初始化的优先级。
C++ 标准要求从上到下构造同一转换单元中的所有全局对象,但它不会对不同转换单元中声明的对象进行排序。 您可以使用 -qpriority 选项对同一装入模块中声明的所有静态对象强制实施构造顺序。 这些对象的析构函数在终止期间按反向顺序运行。
语法
缺省值
缺省优先级为 0。
参数
- 号
- -2147482624 到 2147483647范围内的整数文字。 值越小表示优先级越高; 值越高表示优先级越低。 保留从 -2147483648 到 -2147482623 的数字供系统使用。 如果未指定 number,那么编译器将采用 0。
使用量
一个翻译单元中可以指定多个 #pragma优先级。 在一个编译指示中指定的优先级值适用于在此编译指示之后以及在下一个编译指示之前声明的所有全局对象的构造。 However, in order to be consistent with the Standard, priority values specified within the same translation unit must be strictly increasing. 具有相同优先级值的对象按声明顺序构造。
#pragma 优先级 的影响仅存在于一个装入模块中。 因此,不能使用 #pragma priority 来控制不同装入模块中对象的构造顺序。 请参阅 “库中静态对象的初始化 ”,进一步了解跨模块处理静态对象初始化的技术。
示例
要编译文件
myprogram.C 以生成对象文件 myprogram.o ,以便该文件中的对象具有 2000 的初始化优先级,请输入以下命令: xlc++ myprogram.C -c -qpriority=2000