次の例のソースコードを考えてみましょう。
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 オプションでコンパイルされる場合、フィールドは相互に別名設定できません。