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

印刷ビューの終了

更新: 2014 年 12 月
 
 

5.3.4 明示的な別名設定が必要

次の例では、struct fooa 型のポインタ f1struct foob 型のポインタとしてキャストされています。lint-Xalias_level=strict (またはそれ以上) を指定する場合、struct の型がまったく同じ (同じ型で同数の構造体フィールド) でないかぎり、このようなキャストは明示的な別名設定を必要とします。また、別名レベルが standardstrong の場合、別名設定を実行するにはタグの一致が必要であると仮定されます。f1 への割り当て前に #pragma alias (struct fooastruct foob) を使用すると、lint は警告の生成を停止します。

struct fooa {
    int a;
};

struct foob {
    int b;
};

struct fooa *f1;
struct foob *f2;

void main()
{
    f1 = (struct fooa *)f2; /* explicit aliasing required warning */
}