-qalignrulefor(仅限 C++)
适用的调用
选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
---|---|---|---|---|
-qalignrulefor | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无
用途
与 -qalign=power 一起使用时,确定是否将 4 字节对齐上限应用于结构成员。 结构成员是类型为 typedef
的结构的非第一个成员,其元素类型的数组超过了对齐上限。
语法
缺省值
-qalignrulefor = power=typedef致规则
参数
- typedef相互尊重的规则 | notypedef相互尊重的规则
- 当 typedef致规则 生效时,成员遵循 -qalign=power的正常对齐规则。 此子选项提供与使用具有 XL C++ V6.0 和更低版本的 -qalign=power 编译的代码的兼容性。
对于 XL C++ V9.0,缺省值为 typedef相当规则。
当 notypedef致规则 生效时,超过 4 字节的对齐上限的成员将在 4 字节边界上对齐。 此子选项提供与使用 XL C++ V7.0 和 V8.0的 -qalign=power 编译的代码的兼容性。
预定义的宏
无。
示例
以下示例对包含 long long
类型的成员的结构数组使用 typedef
声明,该成员通常不受 4 字节对齐上限的限制,然后使用 typedef
作为结构变量声明的非第一个成员。 此表根据 -qalignrulefor=power 选项的设置显示不同的对齐结果。
样本代码 | 对齐结果 | |
---|---|---|
typedef致规则 | Notypedef可观察规则 | |
struct A {
long long a1; } a; typedef struct A ten_A [10]; struct B { char dummy [116]; struct A ten_a [10]; } b; struct C { char dummy [116]; ten_A ten_a; } c; |
b.ten_a = 8 对齐 b = 8 对齐 c.ten_a = 8 对齐 c = 8 |
b.ten_a = 8 对齐 b = 8 对齐 c.ten_a = 4 对齐 c = 4 |