Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

5.4.5 例: 共用体

次の例のソースコードを考えてみましょう。

struct foo {
        short f1;
        short f2;
        int   f3;
} *fp;

struct bar {
        int b1;
        int b2;
} *bp;

union moo {
        struct foo u_f;
        struct bar u_b;
} u;

さまざまな別名レベルに基づくコンパイラの仮定を、次に示します。

  • この例が -xalias_level=weak オプションでコンパイルされる場合、fp->f3 および bp->b2 は相互に別名設定できます。

  • この例が -xalias_level=layout オプションでコンパイルされる場合、フィールドは相互に別名設定できません。

  • この例が -xalias_level=strict オプションでコンパイルされる場合、fp->f3 および bp->b2 は相互に別名設定できます。

  • この例が -xalias_level=std オプションでコンパイルされる場合、フィールドは相互に別名設定できません。