MISRA Discussion Forums

Full Version: Does Rule 11.9 allow indirect expansion from NULL?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Does the following example violate Rule 11.9?
Code:
#define FOO NULL
int32_t *p1 = FOO;
rgamble Wrote:Does the following example violate Rule 11.9?
Code:
#define FOO NULL
int32_t *p1 = FOO;
There is a note in rule 11.9 that says:
Quote:a null pointer constant of the form (void*)0 is permitted, whether or not it was expanded from NULL
There is also the following sample code:
Code:
#define MY_NULL_2 (void*)0
if (p2 == MY_NULL_2)/*compliant*/
Given the fact that this is identical with your example after preprocessing stage, logic dictates it cannot be a violation.
I don't think it is a violation. However, the intention of the rule is to increase clarity and your macro reduces clarity.

The note is not relevant to your example.

The compliant example given by @dg1980 is not necessarily identical, as the actual expansion of the NULL macro is implementation-defined.
Your example does not violate rule 11.9 as the value is derived from NULL.

Rule 11.9 permits "NULL", (void *)0 and any macros that expand to these values.