#pragma once #define CO_BEGIN static unsigned state = 0; switch (state) { case 0: #define CO_YIELD do { state = __LINE__; return; case __LINE__:; } while (0) #define CO_BREAK do { state = 0; return; } while (0) #define CO_END } state = 0