MISRA Discussion Forums
what means about "Before preprocessing" in Rule[14.3] - Printable Version

+- MISRA Discussion Forums (https://forum.misra.org.uk)
+-- Forum: MISRA C (https://forum.misra.org.uk/forumdisplay.php?fid=4)
+--- Forum: MISRA-C: 2004 rules (https://forum.misra.org.uk/forumdisplay.php?fid=17)
+---- Forum: 6.14 Control Flow (https://forum.misra.org.uk/forumdisplay.php?fid=46)
+---- Thread: what means about "Before preprocessing" in Rule[14.3] (/showthread.php?tid=745)



what means about "Before preprocessing" in Rule[14.3] - linglingma - 23-06-2010

"Before preprocessing, a null statement shall only occur on a
line by itself; it may be followed by a comment provided that
the first character following the null statement is a white-space
character." in this rule,why "Before preprocessing"is used as a condition?
Thanks!


Re: what means about "Before preprocessing" in Rule[14.3] - misra-c - 09-07-2010

Consider the following code fragment:
Code:
void fn ( bool_t b )
{
   if ( b );   /* Non-compliant */
   {
      DO_SOMETHING;
   }
}
In the above DO_SOMETHING appears to be a (non-null) statement. However this depends on the value of the macro after pre-processing.

If the macro is defined as
Code:
#define DO_SOMETHING
then the DO_SOMETHING line is actually a null statement which appears on a line by itself. In order to catch this, the source code before pre-processing must be considered. Pre-processing will simply remove the DO_SOMETHING token sequence.

Rule 14.3 is also designed to catch the accidental use of null statements by the unintentional insertion of a ';'. The non-compliant line is the example above shows how they can lead to unexpected results, as what appears to be the body of the if statement will always be executed.


Re: what means about "Before preprocessing" in Rule[14.3] - gs - 27-12-2010

However, according to http://www.misra-c2.com/forum/viewtopic.php?t=264, the line with the DO_SOMETHING macro usage is still non-compliant if the macro has the given definition, yes?


Re: what means about "Before preprocessing" in Rule[14.3] - misra-c - 11-01-2011

Yes, it is non-compliant.