JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.

If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.

If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.

CodeSonar® 9.2p0 CONFIDENTIAL CodeSecure Inc
C and C++


LANG.PREPROC.NOFPAREN : Macro Parameter Not Parenthesized

Summary

The body of a function-like macro contains one or more non-parenthesized occurrences of a macro parameter.

Properties

Class Name Macro Parameter Not Parenthesized
Significance style
Mnemonic LANG.PREPROC.NOFPAREN
Categories
MisraC2025 MisraC2025:20.7 Expressions resulting from the expansion of macro parameters shall be appropriately delimited
MisraC2023 MisraC2023:20.7 Expressions resulting from the expansion of macro parameters shall be enclosed in parentheses
Misra2012 Misra2012:20.7 Expressions resulting from the expansion of macro parameters shall be enclosed in parentheses
AUTOSARC++14 AUTOSARC++14:A16-0-1 The pre-processor shall only be used for unconditional and conditional file inclusion and include guards, and using the following directives: (1) #ifndef, (2) #ifdef, (3) #if, (4) #if defined, (5) #elif, (6) #else, (7) #define, (8) #endif, (9) #include.
  AUTOSARC++14:M16-0-6 In the definition of a function-like macro, each instance of a parameter shall be enclosed in parentheses, unless it is used as the operand of # or ##.
MisraC++2008 MisraC++2008:16-0-6 In the definition of a function-like macro, each instance of a parameter shall be enclosed in parentheses, unless it is used as the operand of # or ## .
MisraC++2023 MisraC++2023:19.3.4 Parentheses shall be used to ensure macro arguments are expanded appropriately
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="Macro Parameter Not Parenthesized"

Example

#define M1( a, b ) ( a + b )              /* 'Macro Parameter Not Parenthesized' warning issued here
                                           * - 2 instances: one each for the unparenthesized uses of a and b
                                           */

#define M2( a, b ) ( ( a ) + ( b ) )                /* all occurrences of a and b in the body are parenthesized */

#define M3( a, b ) ( ( a ) + ( b ) + a )  /* 'Macro Parameter Not Parenthesized' warning issued here */

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.

 

To report problems with this documentation, please visit https://support.codesecure.com/.