【发布时间】:2020-01-06 08:35:25
【问题描述】:
我正在阅读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;
}
【问题讨论】:
-
那是Duff's device的诡计。
-
如果您使用的是 boost,那么您正在编写 C++,而不是 C。所以您应该问为什么这是有效的 C++,而不是为什么它是有效的 C(即使答案可能非常相似)。
-
是否需要包含一些原始代码?
-
这与boost-asio 完全无关。这是一个语法问题。不要乱加标签。
标签: c++ c language-lawyer