This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).
If one or several array items are initialized explicitly, all the items have to be explicitly initialized as well.
When initializing using the list in curly braces, all uninitialized items will be initialized by default (for example, by zero). Explicit initialization of each item ensures that all items have been assigned the expected value.
Exceptions:
A few examples that violate the rule:
int White[4] = { 0xffff };
int RGBwhite[4] = { 0xffff, 0xffff, 0xffff };
char *a3[100] = { "string", "literals" };
char hi[5] = { 'H', 'i', '!' };
int designated_butNotAll[4] = { [0] = 3,[1] = 1, 0 };
Here are some correct examples:
char lpszTemp[5] = { '\0' };
char a1[100] = "string_literal";
char a2[100] = { "string_literal" };
int Black[4] = { 0 };
int CMYKwhite[4] = { 0, 0, 0, 0 };
int CMYKblack[4] = { 0xffff, 0xffff, 0xffff, 0xffff };
int designated_All[4] = { [0] = 3,[1] = 1,[2] = 4 };
This diagnostic is classified as:
|