It's just pedantically saying that you should be doing this sizeof( (_Array)[0] )
. Postfix operators have very high precedence so it's unlikely to become an actual problem.
Pedantically you should also use 0u
since the intention is for the 0 to correspond to an unsigned type (size_t
).
Also please note that leading underscore followed by upper-case letter is reserved for any use in the C language, MISRA or no MISRA.
I'd replace this whole macro with:
#define ARRAY_SIZE(array) ( sizeof(array) / sizeof *(array) )
Should be compliant both to the C language and MISRA-C.