Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rule 11.9: Does array initialization to 0 violate Rule 11.9?
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.
Posted by and on behalf of the MISRA C Working Group

Forum Jump:

Users browsing this thread: 1 Guest(s)