Rules 16-2-1 and 16-2-2

Moderators: david ward, misra cpp

dg1980
Posts: 108
Joined: Wed Apr 27, 2016 2:33 pm
Company: Elektrobit Automotive GmbH

Rules 16-2-1 and 16-2-2

Postby dg1980 » Thu Apr 28, 2016 10:28 am

Hi,

strictly interpreted, these rules ban conditional compilation, rendering rules 16-1-1 and 16-1-2 mute.
E.g.:

Code: Select all

#ifdef FEATURE_X
// some code
#endif


In addition, there appears to be no such rule in MISRA C 2012 (presumably, because it is a widely used feature in embedded systems):

Rule Mapping to MISRA C 2012
16-0-2 [Required] n.a. but namespaces are not available in C
16-1-1 [Required] n.a.
16-2-1 [Required] n.a.prohibits conditional compilation which is allowed in C
16-2-2 [Required] n.a.prohibits conditional compilation which is allowed in C

I would expect that a feature like the preprocessor, which is equal in C and C++, is treated equally across all MISRA standards.
Is there any chance this will be corrected/clarified in a new version or technical corrigendum?

dg1980
Posts: 108
Joined: Wed Apr 27, 2016 2:33 pm
Company: Elektrobit Automotive GmbH

Re: Rules 16-2-1 and 16-2-2

Postby dg1980 » Fri Apr 29, 2016 9:59 am

For the sake of completeness, these are the rules which are consistent between MISRA C++ and MISRA C:

Rule Mapping to MISRA C 2012
16-0-1 [Required] 20.1 [Advisory]
16-0-3 [Required] 20.5 [Advisory]
16-0-4 [Required] Dir 4.9 [Advisory]
16-0-5 [Required] 20.6 [Required]
16-0-6 [Required] 20.7 [Required]
16-0-7 [Required] 20.9 [Required]
16-0-8 [Required] 20.13 [Required]
16-1-2 [Required] 20.14 [Required]
16-2-3 [Required] Dir 4.10 [Required]
16-2-4 [Required] 20.2 [Required]
16-2-5 [Advisory] 20.2 [Required]
16-2-6 [Required] 20.3 [Required]
16-3-1 [Required] 20.11 [Required]
16-3-2 [Advisory] 20.10 [Advisory]

misra cpp
Posts: 145
Joined: Mon Jun 02, 2008 1:55 pm
Company: MISRA

Re: Rules 16-2-1 and 16-2-2

Postby misra cpp » Tue Oct 11, 2016 11:13 am

Yes, currently you need a deviation. This is being reviewed
Posted by and on behalf of
the MISRA C++ Working Group


Return to “6.16 Preprocessing directives (C++)”

Who is online

Users browsing this forum: No registered users and 2 guests