fork download
  1. #define MERGE_(a,b) a##b
  2. #define LABEL_(c,d) MERGE_(c, d)
  3. #define GT_(c) LABEL_(c,__LINE__)
  4.  
  5. #define tIF(a,b,c) \
  6. { \
  7.   void* _tmp; \
  8.   _tmp = ( a )? &&GT_(true): &&GT_(false); \
  9.   goto *_tmp; \
  10.   GT_(true) : b; goto GT_(end); \
  11.   GT_(false): c; \
  12.   GT_(end):; \
  13. }
  14.  
  15.  
  16. typedef struct _A { int i; } A;
  17.  
  18. A* foo1(int i)
  19. {
  20. return (A*)0;
  21. }
  22.  
  23. double foo2(double f)
  24. {
  25. return f;
  26. }
  27.  
  28. int main()
  29. {
  30.  
  31. int shit = 0;
  32. tIF((shit),foo1(0),foo2(0.0));
  33. shit = 1;
  34. tIF((shit),foo1(0),foo2(0.0));
  35. return 0;
  36. }
Success #stdin #stdout 0s 1784KB
stdin
Standard input is empty
stdout
Standard output is empty