次の例のソースコードを考えてみましょう。
struct bar;
struct foo {
        struct foo *ffp;
        struct bar *fbp;
} *fp;
struct bar {
        struct bar *bbp;
        long        b2;
} *bp;
それぞれの別名レベルに基づいて、コンパイラは次のように仮定します。
この例が -xalias_level=weak オプションでコンパイルされる場合、fp->ffp および bp->bbp だけが相互に別名設定できます。
この例が -xalias_level=layout オプションでコンパイルされる場合、fp->ffp および bp->bbp だけが相互に別名設定できます。
この例が -xalias_level=strict オプションでコンパイルされる場合、フィールドは別名設定できません。タグが削除されたあとも、2 つの構造体の型が異なるからです。
この例が -xalias_level=std オプションでコンパイルされる場合、フィールドは別名設定できません。2 つの型とタグが同じではないからです。