C and C++


LANG.PREPROC.PRAGMA : Use of #pragma

Summary

A use of the #pragma preprocessor directive.

Many coding standards forbid the use of #pragma because it makes code harder for human readers to understand.

Properties

Class Name Use of #pragma
Significance style
Mnemonic LANG.PREPROC.PRAGMA
Categories
Misra2004 Misra2004:3.4 All uses of the #pragma directive shall be documented and explained
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:A16-7-1 The #pragma directive shall not be used.
MisraC++2008 MisraC++2008:16-6-1 All uses of the #pragma directive shall be documented.
MisraC++2023 MisraC++2023:19.6.1 The #pragma directive and the _Pragma operator should not be used
CWE CWE:1076 Insufficient Adherence to Expected Conventions
JSF++ JSF++:26 Only the following pre-processor directives shall be used: #ifndef, #define, #endif, #include.
POW10 POW10:8 Limit the use of the preprocessor to file inclusion and simple macros.
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="Use of #pragma"

Example

#pragma "override" /* 'Use of #pragma' warning issued here */

Relevant Configuration File Parameters

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