[ create a new paste ] login | about

Link: http://codepad.org/Phbs95N7    [ raw code | output | fork ]

aaronla - C++, pasted on Jul 23:
#define CGOTO(label) { _dispatch = (label); goto _dispatcher; }
#define BEGIN_CGOTO int _dispatch=-1; _dispatcher: switch (_dispatch) { case -1:;
#define END_CGOTO  }

int main() {
    enum { a, b, end };
    static int states[] = { a, b, a, end };
    int i = 0;

    BEGIN_CGOTO

    CGOTO(states[i++]);
case a: 
    printf("a\n");
    CGOTO(states[i++]);
case b:
    printf("b\n");
    CGOTO(states[i++]);
case end:;

    END_CGOTO
}


Output:
1
2
3
a
b
a


Create a new paste based on this one


Comments: