runner% cat prepro.c #define MIN(x, y) (((x) < (y)) ? (x) : (y)) #define MIN4(a, b, c, d) MIN(MIN(a, b), MIN(c, d)) #define BETA 0.292893218813452476 #define f(x) ((x) < -BETA) ? (-2.0*((x)+1.0)*((x)+1.0)) \ : (((x) <= 0) ? (-2.0*(x)*((x)+2.0)) \ : (((x) < BETA) ? (2.0*(x)*(2.0-(x))) \ : (-2.0*(1.0-(x))*(1.0-(x))))) /*#define DEBUG */ void main() { int u = 1, v = 2, r = 3, s = 4, t = 5; double y = 1.0, z; u = MIN(u, v); v = MIN4(r, s, t, u); z = f(y); #ifdef DEBUG printf("%f\n", z); printf("%i, %i\n", u, v); #else printf("No debuggin\n"); #endif } runner% cc -E prepro.c > prepro.out runner% cat prepro.out # 8 "prepro.c" void main() { int u = 1, v = 2, r = 3, s = 4, t = 5; double y = 1.0, z; u = ( ( ( u ) < ( v ) ) ? ( u ) : ( v ) ) ; v = ( ( ( ( ( ( r ) < ( s ) ) ? ( r ) : ( s ) ) ) < ( ( ( ( t ) < ( u ) ) ? ( t ) : ( u ) ) ) ) ? ( ( ( ( r ) < ( s ) ) ? ( r ) : ( s ) ) ) : ( ( ( ( t ) < ( u ) ) ? ( t ) : ( u ) ) ) ) ; z = ( ( y ) < - 0.292893218813452476 ) ? ( - 2.0 * ( ( y ) + 1.0 ) * ( ( y ) + 1.0 ) ) : ( ( ( y ) <= 0 ) ? ( - 2.0 * ( y ) * ( ( y ) + 2.0 ) ) : ( ( ( y ) < 0.292893218813452476 ) ? ( 2.0 * ( y ) * ( 2.0 - ( y ) ) ) : ( - 2.0 * ( 1.0 - ( y ) ) * ( 1.0 - ( y ) ) ) ) ) ; # 20 printf("No debuggin\n"); # 22 } #ident "acomp: (CDS) SPARCompilers 2.0.1 03 Sep 1992" runner% cc -o prepro prepro.c runner% prepro No debuggin runner% prepro2 (Removes comment from around /*#define DEBUG */) -0.000000 1, 1