Braces shall be used to indicate and match the structure in the non- zero initialization of arrays and structures
Braces shall be used to indicate and match the structure in the non- zero initialization of arrays and structures.
The use of nested braces in initializer lists to match the structures of nested
objects in arrays, unions, and structs encourages you to consider the order of
initialization of complex data types and makes your code more readable. For example,
the use of nested braces in the initialization of ex1 makes it
easier to see how the nested arrays arr1 and
arr2 in struct ex1 are
initialized.
struct Example
{
int num;
int arr1[2];
int arr2[3];
};
//....
struct Example ex1 {1, {2, 3}, {4, 5, 6}}; //CompliantThe rule does not require the use of nested braces if you zero initialize an array, a union, or a struct with nested structures are the top-level, for instance:
struct Example ex1 {}; //CompliantIf you non-zero initialize an array, union, or struct that contains nested
structures and you do not use nested braces to reflect the nested structure,
Polyspace® flags the first element of the first nested structure in the
initializer list. For instance, in this code snippet, Polyspace flags the number 2 because it corresponds to the
first element of nested structure arr1 inside struct
ex1.
struct Example
{
int num;
int arr1[2];
int arr2[3];
};
//....
struct Example ex1 {1, 2, 3, 4, 5, 6}; // Non-compliantIf you expect a rule violation but do not see it, refer to the documentation for Polyspace Code Prover™ or Polyspace Code Prover Server™.
| Group: Declarators |
| Category: Required |