C and C++


LANG.TYPE.BFUNION : Bit-field in Union

要旨

A member of a union is declared as a bit-field.

A member of a union that contains a bit-field member, but is not itself a union, will not trigger a warning of this class.

This class is a strict subset of Union Type.

プロパティ

クラス名 Bit-field in Union
日本語クラス名 Bit-field in Union
クラス分類 信頼性 (reliability)
ニーモニック LANG.TYPE.BFUNION
カテゴリー
MisraC2023 MisraC2023:6.3 A bit field shall not be declared as a member of a union
  MisraC2023:19.2 The union keyword should not be used
Misra2012 Misra2012:6.3 A bit field shall not be declared as a member of a union
  Misra2012:19.2 The union keyword should not be used
Misra2004 Misra2004:3.5 The implementation defined behaviour and packing of bitfields shall be documented if being relied upon
  Misra2004:18.4 Unions shall not be used
AUTOSARC++14 AUTOSARC++14:A9-5-1 Unions shall not be used.
MisraC++2008 MisraC++2008:9-5-1 Unions shall not be used.
MisraC++2023 MisraC++2023:12.2.1 Bit fields should not be declared
JSF++ JSF++:153 Unions shall not be used.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Bit-field in Union"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

union u1 {                /* 'Bit-Field in Union' warning issued here
                           * (also 'Union Type', when enabled)
                           */
    unsigned int bf:1;
    float f;
};

/* ok: not a union */
struct s1 {
    unsigned int bf:1;
    float f;
};

/* ok:
 * - union u2 has no bit-field members
 * - bit-field u1.s.bf is a member of a struct (not a union)
 */
union u2 {                /* ('Union Type' warning issued when enabled) */
    struct {
        unsigned int bf:1;
        int i;
    } s;
    float f;
};

struct s2 {
    union {               /* 'Bit-Field in Union' warning issued here
                           * (also 'Union Type', when enabled)
                           */
        unsigned int bf:1;
        int i;
    } u;
    float f;
};

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。