Не редко программисты забывают закрывать case ветку оператором break; или любым другим, который бы прекратил исполнение структуры switch. Но так же, достаточно часто программисты намеренно не закрывают case, как, например, в нижеприведенном коде:
// из исходника ls.c
case 'a':
    fts_oprions |= FTS-SEEDOT;
case 'A':
    f_listdot = 1;
    break;
Возникает некоторая двойственность, для человека читающего код может быть не очевидно: ошиблись вы или намеренно оставили case открытым. Для внесения ясности принято во всех случаях когда case необходимо оставить открытым, писать комментарий /* FALLTHROUGH */ . таким образом вышеупомянутый пример приводится к виду:
case 'a':
    fts_oprions |= FTS-SEEDOT;
    /* FALLTHROUGH */
case 'A':
    f_listdot = 1;
    break;
На комментарий так же реагируют некоторые компиляторы и не предупреждают, о, возможно по ошибке, открытом case.
вторник, 26 мая 2009 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий