C and C++


LANG.PREPROC.COND : Conditional Compilation

Summary

One of the following conditional compilation constructs is used.

The check will ignore cases where a file contains only one such construct provided it has one of the following forms.

#ifndef macro_name 
#define macro_name
/* code */
#endif
or
#if !defined(macro_name) 
#define macro_name
/* code */
#endif

Otherwise, a warning will be triggered even if the conditional compilation construct does not contain any code.

Properties

Class Name Conditional Compilation
Significance style
Mnemonic LANG.PREPROC.COND
Categories
CWE CWE:710 Improper Adherence to Coding Standards
POW10 POW10:8 Limit the use of the preprocessor to file inclusion and simple macros.
JPL JPL:20 Make only very limited use of the C pre-processor.
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="Conditional Compilation"

Example

int x;

#ifdef PRINT_ON   /* 'Conditional Compilation' warning issued here */
    printf("x = %d", x);
#endif

Relevant Configuration File Parameters

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