Я читаю 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
оператор switch с чередованием do-while, Как работает устройство Даффа? — person PeopleMoutainPeopleSea schedule 06.01.2020
Это не имеет ничего общего с boost-asio. Это вопрос синтаксиса. Не ставьте теги без разбора. — person PeopleMoutainPeopleSea schedule 06.01.2020
