V2583. MISRA. Line whose first token is '#' should be a valid preprocessing directive.
This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).
This diagnostic rule is only relevant to C. Preprocessor directives (lines starting with'#') can be used to conditionally include or exclude code from compilation. Incorrectly written preprocessor directives can lead to incorrect inclusion or exclusion of code while such code changes were not intended. Therefore, all preprocessing directives must be syntactically correct.
Consider an example:
// #define CIRCLE
#define SQUARE
float processArea(float x)
{
#ifdef CIRCLE
return 3.14 * x * x;
#elf defined(SQUARE)
return x * x;
#else1
return 0;
#endif
}
The '#elif' and '#else' preprocessor directives are misspelled here. This will exclude all code from the function body. Correct version:
// #define CIRCLE
#define SQUARE
float processArea(float x)
{
#ifdef CIRCLE
return 3.14 * x * x;
#elif defined(SQUARE)
return x * x;
#else
return 0;
#endif
}
This diagnostic is classified as:
|