Этюд: switch/case в C

На опечатках учатся.

Сегодня вот непроизвольно появился на свет любопытный switch/case.
Обычно для использования локальных переменных в операторах case тело кейса оборачивают в фигурные скобки:

switch (op) {
case OP_OPEN: {
  int res;
  ...
  }
  break;
CASE OP_READ: {
  int res;
  int nbytes;
  ...
  }
  break;
}

Ну примерно так. На мой взгляд эти скобки как-то портят вид switch/case. Поэтому, если переменные часто встречаются в switch/case — я их выношу выше (скажем, объявляю как локальные переменные текущей функции). Тоже не очень — повышаю область видимости. А сегодня случайно получилось вот такое:

switch (op) {
  int r;
  int nbytes;
case OP_OPEN:
  ...
  break;
case OP_READ:
  ....
  break;
}

Лично мне нравится. Изящный fallthrough. Я думаю даже совместим со стандартом. А вы что думаете по поводу такой конструкции?

Реклама
This entry was posted in C.

6 comments on “Этюд: switch/case в C

  1. Ation:

    Ага, и еще разбавить другим плюшками, например
    int *a = (int*)malloc(10*sizeof(int));

    switch(index) {
    int value = index * 10;
    case 0:
    value += index++, ++index[—a] = ++value + value++;
    break;

    }

  2. Ation:

    сори, ошибся
    … index++[—a] …

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s