Вопросы

Почему допустимо переплетать операторы switch / for / if в C / C ++?

Я читаю boost/asio/coroutine.hpp и не могу понять реализацию BOOST_ASIO_CORO_REENTER и BOOST_ASIO_CORO_YIELD. Развернутая форма

reenter (this) {
  yield ..
  yield ..
}

вроде бы переплетены switch / if / for операторы. Мне интересно, почему это действительный код C? Я написал нечто подобное (показано ниже) и обнаружил, что оно компилируется с использованием gcc.

int main() {
  int a = 1;
  switch (a)
  case 0: if (1) a = 2;
  else case 1: for (;;) {
    case 3:
      break;
  }

  return 0;
}

Это некая уловка устройства Даффа.   —  person PeopleMoutainPeopleSea    schedule 06.01.2020

Если вы используете boost, значит, вы пишете C ++, а не C. Итак, вы должны спросить, почему это действительный C ++, а не почему он действителен C (даже если ответы, вероятно, будут очень похожими).   —  person PeopleMoutainPeopleSea    schedule 06.01.2020

Хотите добавить часть исходного кода?   —  person PeopleMoutainPeopleSea    schedule 06.01.2020

Читать:
Действие формы не остановилось после загрузки файла с сервлетами в GWT?

оператор switch с чередованием do-while, Как работает устройство Даффа?   —  person PeopleMoutainPeopleSea    schedule 06.01.2020

Это не имеет ничего общего с boost-asio. Это вопрос синтаксиса. Не ставьте теги без разбора.   —  person PeopleMoutainPeopleSea    schedule 06.01.2020

Похожие записи

Сопрограммы C ++: допустимо ли вызывать handle.destroy из последней точки приостановки?

admin

получение ошибки при обновлении правопреемника и поля комментария в JIRA с использованием python

admin

Cypress — Ошибка: не удается найти модуль ‘../../webpack.config.js’

admin

Как преобразовать миллисекунды в минуты: секунды на выходе?

admin

Невозможно установить NodeJs: / usr / bin / env: node: нет такого файла или каталога

admin

Использование разных учетных данных aws в конвейере Bitbucket

admin