MISRA Discussion Forums

Full Version: Rule 11.9: Does this struct initialization violate rule 11.9?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Dear community,

our analysis tool reports the following struct initialization to violate rule 11.9 (macro NULL is the only permitted form of integer null pointer constant):

static const myType myStruct = {
64,
{0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0},
0
};

with:
typedef unsigned short uint16;
typedef unsigned char uint8;
typedef struct {
uint16 myVariable01;
uint8 myArray [16];
uint8 myVariable02;
} myType;

Unfortunately, neither from the tool documentation nor from the MISRA documentation we can conclude why this initialization would be non-compliant. Also we cannot see what the risk behind this deviation would be. Is this deviation false-positive? Does it introduce any portability, maintainability etc. risk?

Thanks for your support.
Frank
Code:
typedef struct {
uint16 myVariable01;
uint8 myArray [16];
uint8 myVariable02;
} myType;
Since myType does not contain a pointer and NULL macro is not even used in initialization, it is a false positive IMHO.
A violation would look like this:
Code:
uint8* ptr = 0;// use NULL for pointer initialization
There is no null pointer constant in this example and hence no violation of rule 11.9