#define BEGIN int pg_cnt__ = 0 #define END ++work->pg_cnt #define DO if (pg_cnt__++ == work->pg_cnt) #define LABEL(x) pg_cnt = x #define GOTO(x) do { work->pg_cnt = x-1; return; } while (0)
void task_handler(TASK_WORK* work) { BEGIN; DO printf("1フレーム目\n"); DO { printf("2フレーム目"); GOTO( 100 ); } LABEL( 100 ); DO printf("3,5,7,9…フレーム目\n"); DO { printf("4、6,8,10…フレーム目\n"); GOTO( 100 ); } END; }