exponenta event banner

MISRA C:2012 Правило 16.5

Метка по умолчанию должна отображаться как первая или последняя метка коммутатора инструкции switch

Описание

Определение правила

Метка по умолчанию должна отображаться как первая или последняя метка коммутатора инструкции switch.

Объяснение

С помощью этого правила можно легко найти default метка в пределах switch заявление.

Поиск неисправностей

Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.

Примеры

развернуть все

void foo(int var){

    switch(var){
        default:   /* Compliant - default is the first label */
        case 0:
            ++var;
            break;
        case 1:
        case 2:
            break;
    }
        
    switch(var){
        case 0:
            ++var;
            break;
        default:    /* Non-compliant - default is mixed with the case labels */
        case 1:
        case 2:
            break;
    }
    
    switch(var){
        case 0:
            ++var;
            break;
        case 1:
        case 2:
        default:     /* Compliant - default is the last label */
            break;
    }
    
    switch(var){
        case 0:
            ++var;
            break;
        case 1:
        case 2:
            break;
        default:      /* Compliant - default is the last label */
            var = 0;
            break;
    }
}

Этот пример показывает одну и ту же инструкцию switch несколько раз, каждая с default в другом месте. Как показывают первые, третьи и четвертые операторы переключения, default должна быть первой или последней меткой. default может быть частью составного предложения switch (например, третьего switch пример), но он должен быть последним перечисленным.

Проверить информацию

Группа: Операторы переключения
Категория: Обязательно
СМЖЛ Категория: Консультативные услуги