1*cdf0e10cSrcweir 2*cdf0e10cSrcweir#define ABC \ 3*cdf0e10cSrcweir ggg 4*cdf0e10cSrcweir 5*cdf0e10cSrcweirABC 6*cdf0e10cSrcweir 7*cdf0e10cSrcweir/* Standards --------------------------------------------------------------- */ 8*cdf0e10cSrcweir 9*cdf0e10cSrcweir#define NOTHING 10*cdf0e10cSrcweirNOTHING 11*cdf0e10cSrcweir 12*cdf0e10cSrcweir#define SYMBOL symbol 13*cdf0e10cSrcweir#undef SYMBOL 14*cdf0e10cSrcweir#define SYMBOL _symbol_ 15*cdf0e10cSrcweir 16*cdf0e10cSrcweir< SYMBOL > // < _symbol_ > 17*cdf0e10cSrcweirxSYMBOLx // xSYMBOLx 18*cdf0e10cSrcweir+SYMBOL- // +_symbol_- 19*cdf0e10cSrcweir>SYMBOL< // >_symbol_< 20*cdf0e10cSrcweir<SYMBOL> // <_symbol_> 21*cdf0e10cSrcweir 22*cdf0e10cSrcweir#define FALSE 0 23*cdf0e10cSrcweir#define TRUE !FALSE 24*cdf0e10cSrcweira = x > 0 ? TRUE : FALSE // a = x > 0 ? !0 : 0 25*cdf0e10cSrcweir 26*cdf0e10cSrcweir#define A x 27*cdf0e10cSrcweir#define B y 28*cdf0e10cSrcweir#define MAC(a, b) \ 29*cdf0e10cSrcweir T() { a(); return b; } // T() { x(); return y; } 30*cdf0e10cSrcweirMAC(A,B); 31*cdf0e10cSrcweir 32*cdf0e10cSrcweir#ifdef MAC 33*cdf0e10cSrcweirMAC(X,Y) 34*cdf0e10cSrcweir#endif // MAC 35*cdf0e10cSrcweir 36*cdf0e10cSrcweir/* Recursions -------------------------------------------------------------- */ 37*cdf0e10cSrcweir 38*cdf0e10cSrcweir#define y x 39*cdf0e10cSrcweir#define x y 40*cdf0e10cSrcweirx // x 41*cdf0e10cSrcweir 42*cdf0e10cSrcweir#define Test(a) a 43*cdf0e10cSrcweir#define b Test(b) 44*cdf0e10cSrcweira = b; // a = b; 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir#define func abc(func) 47*cdf0e10cSrcweira = func // a = abc(func) 48*cdf0e10cSrcweir 49*cdf0e10cSrcweir#define func1 func(abc) 50*cdf0e10cSrcweira = func1 // a = abc(func)(abc) 51*cdf0e10cSrcweir 52*cdf0e10cSrcweir#define args(func, args) func args 53*cdf0e10cSrcweirargs(t1, (args(t2, (x, y)))) // t1 (t2 (x, y)) 54*cdf0e10cSrcweir 55*cdf0e10cSrcweir#define ARGS(a) a 56*cdf0e10cSrcweir#define __ ARGS 57*cdf0e10cSrcweirint foo __((int x)); // int foo (int x); 58*cdf0e10cSrcweir 59*cdf0e10cSrcweir/* Concatinations ---------------------------------------------------------- */ 60*cdf0e10cSrcweir 61*cdf0e10cSrcweir#define tail _Test 62*cdf0e10cSrcweir// Txt_##tail // Txt_##_Test 63*cdf0e10cSrcweir 64*cdf0e10cSrcweir#define z(e,f) e##_##f 65*cdf0e10cSrcweirz ( abc, xyz ) // abc_xyz 66*cdf0e10cSrcweir 67*cdf0e10cSrcweir 68*cdf0e10cSrcweir#define CAT( var ) fix##.var 69*cdf0e10cSrcweirCAT( a ) // fix.a 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir#define CAT3( class, ref ) class##ref::class##ref 72*cdf0e10cSrcweirCAT3( a, b ) // ab::ab 73*cdf0e10cSrcweir 74*cdf0e10cSrcweir#define CAT2( var ) fix##var::fix##var 75*cdf0e10cSrcweirCAT2( a ) // fixa::fixa 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir/* Extrems ----------------------------------------------------------------- */ 78*cdf0e10cSrcweir 79*cdf0e10cSrcweir#define MAKE_X( name ) name##_Test 80*cdf0e10cSrcweir#define MAKE_Y( name ) MAKE_X( name##_Sym ) 81*cdf0e10cSrcweirMAKE_Y( Txt ); // Txt_Sym_Test; 82*cdf0e10cSrcweir 83*cdf0e10cSrcweir 84*cdf0e10cSrcweir/* Extensions -------------------------------------------------------------- */ 85*cdf0e10cSrcweir 86*cdf0e10cSrcweir/* 87*cdf0e10cSrcweir#ident "(c)# Test.txt" 88*cdf0e10cSrcweir 89*cdf0e10cSrcweir#if #machine(i386) 90*cdf0e10cSrcweir# error illegal machine 91*cdf0e10cSrcweir#endif 92*cdf0e10cSrcweirchar machine[6]; 93*cdf0e10cSrcweir*/ 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir/* Last bug ----------------------------------------------------------------- */ 96*cdf0e10cSrcweir#define Cfstrcpy Cstrcpy 97*cdf0e10cSrcweir#define Cstrcpy( s1, s2 ) strcpy( s1, s2 ) 98*cdf0e10cSrcweir 99*cdf0e10cSrcweirCfstrcpy(Par1,Par2 ) // blub( Par1, Par2 ) 100*cdf0e10cSrcweir 101*cdf0e10cSrcweir/* ---------------------------------------------------------------------- */ 102