do foo(); _After bar(); /* exactly equivalent to (with gcc ({})s): */ ({ bar(); foo(); }); #define DEFER(a, b, c) \ _Let(a) if(!b) {} else do {c;} _After