[previous] 3234 [next] Declarations precede the first label in this 'switch' construct.
Switch statements

The first case label in this switch statement is preceded by one or more declarations.

Declarations at the beginning of a switch statement are quite legitimate but are not always encouraged by coding standards. Serious problems only arise if local objects are initialized; the initialization will simply not take place.

For example:


/*PRQA S 1-9999 ++*/
/*PRQA S 2008, 2880, 2882, 2961, 3234 --*/

extern int g;
extern int m;

extern int foo(int n)
{
    int r;

    switch (n)                          /* Message 2882 */
    {
        int la;                         /* Message 3234 */
        int lb = 5;
        r = 1;                          /* Message 2008 and 2880 */

    case 1:
        la = g;
        g = m;
        m = la;
        r = 2;
        break;

    case 2:
        g = lb;                         /* Message 2961 */
        lb = m;
        r = 4;
        break;

    default:
        r = 0;
        break;
    }

    return r;
}


MISRA C:2012 Rules applicable to message 3234:

Rule-16.1  (Required) All switch statements shall be well-formed


See also:

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