MISRA Discussion Forums

Full Version: Rule 11.9: Does array initialization to 0 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 array initialization to violate rule 11.9 (macro NULL is the only permitted form of integer null pointer constant):

uint8 myBuffer[8] = {0u}; // with "typedef unsigned char uint8;"

Unfortunately, neither from the tool documentation nor from the MISRA documentation we can conclude why this "standard" construct 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.
There is no null pointer constant in this example and hence no violation of rule 11.9.

However there is a violation of rule 9.3 since the array is only partially initialized.

Valid initializations would be:
uint8 myBuffer[ 8 ] = { 0u,0u,0u,0u,0u,0u,0u,0u };
uint8 myBuffer[ 8 ] = { 0 };
The use of "0" is a special case which is permitted by exception in rule 9.3 and 10.3.