在 boost / asio / coroutine.hpp 里面,宏yield
的定义中有case语句,似乎无法访问:
switch (_coro_value ? 0 : 1) \
for (;;) \
case -1: if (_coro_value) \
goto terminate_coroutine; \
else for (;;) \
case 1: if (_coro_value) \
goto bail_out_of_coroutine; \
else case 0:
case -1
的目的是什么,因为切换后的值只能是0
或1
?