このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C++:2008 Rule 8-5-2
Braces shall be used to indicate and match the structure in the nonzero initialization of arrays and structures.
説明
ルール定義
配列および構造体の非ゼロによる初期化では、構造を指示して一致させるために中かっこが使用されます。
根拠
初期化子リストで入れ子にされた中かっこを使用して、配列、共用体、構造体に含まれる入れ子にされたオブジェクトの構造体と一致させると、複雑なデータ型が初期化される順序を考慮するよう促されるため、より読みやすいコードになります。たとえば、ex1 の初期化で入れ子にされた中かっこを使用すると、struct ex1 に含まれる入れ子にされた配列 arr1 および arr2 がどのように初期化されるのかを確認しやすくなります。
struct Example
{
int num;
int arr1[2];
int arr2[3];
};
//....
struct Example ex1 {1, {2, 3}, {4, 5, 6}}; //Compliantたとえば次のように、入れ子にされた構造体が含まれる、最上位にある配列、共用体、または struct のゼロ初期化を行う場合、このルールは入れ子にされた中かっこの使用を要件としません。
struct Example ex1 {}; //CompliantPolyspace 実装
入れ子にされた構造体が含まれる配列、共用体、または struct の非ゼロ初期化を行う場合、入れ子にされた構造体を反映するために入れ子にされた中かっこを使用していなければ、Polyspace® は初期化子リストの最初の入れ子にされた構造体に含まれる最初の要素にフラグを設定します。たとえば、このコード スニペットでは、Polyspace は数値 2 にフラグを設定します。これが、struct ex1 に含まれる入れ子にされた構造体 arr1 の最初の要素に対応するためです。
struct Example
{
int num;
int arr1[2];
int arr2[3];
};
//....
struct Example ex1 {1, 2, 3, 4, 5, 6}; // Non-compliantPolyspace は、標準テンプレート ライブラリ (STL) によって実装されたコンテナーに対し、このルールの違反を報告しません。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Declarators |
| カテゴリ: 必要 |