Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rule 11.9: Does array initialization to 0 violate Rule 11.9?
#1
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.
Frank
<t></t>
Reply
#2
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:
Code:
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
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)