typedef signed char int8_t; typedef unsigned char uint8_t; static struct { int8_t n, p0, p1, p2, p3; } info; int8_t getPos3 (int8_t a0, int8_t a1, int8_t a2) { if (1 == a0 && 2 == a1) switch (a1) { case 2: return 1; } return 0; } void doAction (int a, int8_t a0, int8_t a1, int8_t a2) { if (1 == a0 && 0 == a1) info.n--; } void menu_cycle(void) { if (info.p3 < getPos3 (info.p0, info.p1, info.p2) -1) doAction (0, info.p0, info.p1, info.p2); }