可使用 -xport64 生成对长位字段的警告。出现这种位字段时,位字段的包装可能会显著更改。在成功移植到 64 位架构之前,依赖于假定的任何程序都需要重新检查,该假定与包装位字段的方法有关。
example% cat test4.c #include <stdio.h> union U { struct S { unsigned long b1:20; unsigned long b2:20; } s; long buf[2]; } u; int main() { u.s.b1 = 0XFFFFF; u.s.b2 = 0XFFFFF; printf(" u.buf[0] = %lx u.buf[1] = %lx\n", u.buf[0], u.buf[1]); return 0; } example% |
V9 中的输出:
example% u.buf[0] = ffffffffff000000 u.buf[1] = 0 |