[previous] 0591 [next] [C] A 'case' label must be an integral constant expression.
Constraint violations REFERENCE - ISO:C90-6.6.4.2 The switch Statement - Constraints

This is a constraint error

The case label is not an integral constant expression. For example:


/*PRQA S 1263,1269,2016,3227,3408 ++*/

#define A 1
#define B (int)2.
#define C 3.5
#define D (int)(2.2 * 2.5)

void foo(int n)
{
   switch(n)
   {
   case A:           /* OK: integer constant */
      break;
   case B:           /* OK: float cast to int */
      break;
   case C:           /* Message 0591: float expression */
      break;
   case D:           /* Message 0591: not an integral constant expression */
      break;
   default:
      break;
   }
}


MISRA C:2012 Rules applicable to message 0591:

Rule-1.1  (Required) The program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation's translation limits


QA·C Source Code Analyser 8.1
MISRA C:2012 Compliance Module 1.0
© 2012 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index | MISRA C:2012 Rule Index Contents