MISRA C:2012 Rule 16.5

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

Описание

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

Метка по умолчанию отображается как первая или последняя метка 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 в другом месте. Как показывают первые, третьи и четвертые операторы switch default должна быть первой или последней меткой. default может быть частью составного предложения switch (для образца, третье switch пример), но это должен быть последний список.

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

Группа: Операторы Switch
Категория: Требуемая
Категория СМЖЛ: Консультационная