Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Does Rule 11.9 allow indirect expansion from NULL?
#1
Does the following example violate Rule 11.9?
Code:
#define FOO NULL
int32_t *p1 = FOO;
<t></t>
Reply
#2
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.
<t></t>
Reply
#3
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.
<t></t>
Reply
#4
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.
Posted by and on behalf of the MISRA C Working Group
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)