Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rule 8.8 Does this apply to after pre-processing
#1
Is the following code compliant with rule 8.9 “An object should not be defined at block scope if its identifier only appears in a single function”?
Code:
#define MACHINE1 0
int32_t x;   /* compliant or not? */

void fn1 ( void )
{
   x = 3;
}

int32_t fn2 ( void )
{
#if ( MACHINE1 )
   return x;
#else
   return 0;
#endif
}
Posted by and on behalf of the MISRA C Working Group
#2
The MISRA guidelines define "code" in the Glossary as
Quote:Code consists of everything within a translation unit that is not excluded by conditional compilation.
Therefore, the guidelines apply to code after preprocessing directives have been executed, unless otherwise stated in a guideline.

In this example, “x” is excluded by the conditional compilation in “fn2” and therefore only appears in “fn1”. Hence the code is not compliant with rule 8.9.
Posted by and on behalf of the MISRA C Working Group


Forum Jump:


Users browsing this thread: 1 Guest(s)