Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Preprocessor directives and white space
#1
Rule 19.16 of MISRA C2 requires "In particular, ensure that #else and #endif directives are not followed by any characters other than white-space."

Does this rule apply to the end of the line or just the character following the 'e' or 'f'.

e.g.

Code:
#endif
/* header file exclusion */
vs
Code:
#endif /* header file exclusion */
vs
Code:
#endif/*header file exclusion */

Which of these is allowed / preferred / not allowed by MISRA C

Jonathan
<t></t>
#2
Quote:Does this rule apply to the end of the line or just the character following the 'e' or 'f'.

The rule applies to all the characters following the last character of the pre-processor directive to the end of the line.

Quote:Which of these is allowed / preferred / not allowed by MISRA C
All three forms are acceptable. Style is not addressed by MISRA C.

The sentence

Quote:In particular, ensure that #else and #endif directives are not followed by any characters other than white-space.

should be read as the following

Quote:In particular, ensure that #else and #endif directives are followed by white space.

ISO-C90:6.1 states that preprocessing tokens can be separated by white space which consists of comments, or white-space characters (space, horizontal tab, new-line, vertical tab, and form-feed), or both.

[ID:0000012]
Posted by and on behalf of the MISRA C Working Group


Forum Jump:


Users browsing this thread: 1 Guest(s)