7 /* Standards --------------------------------------------------------------- */
14 #define SYMBOL _symbol_
16 < SYMBOL > // < _symbol_ >
18 +SYMBOL- // +_symbol_-
19 >SYMBOL< // >_symbol_<
20 <SYMBOL> // <_symbol_>
24 a = x > 0 ? TRUE : FALSE // a = x > 0 ? !0 : 0
29 T() { a(); return b; } // T() { x(); return y; }
36 /* Recursions -------------------------------------------------------------- */
46 #define func abc(func)
47 a = func // a = abc(func)
49 #define func1 func(abc)
50 a = func1 // a = abc(func)(abc)
52 #define args(func, args) func args
53 args(t1, (args(t2, (x, y)))) // t1 (t2 (x, y))
57 int foo __((int x)); // int foo (int x);
59 /* Concatinations ---------------------------------------------------------- */
62 // Txt_##tail // Txt_##_Test
64 #define z(e,f) e##_##f
65 z ( abc, xyz ) // abc_xyz
68 #define CAT( var ) fix##.var
71 #define CAT3( class, ref ) class##ref::class##ref
72 CAT3( a, b ) // ab::ab
74 #define CAT2( var ) fix##var::fix##var
75 CAT2( a ) // fixa::fixa
77 /* Extrems ----------------------------------------------------------------- */
79 #define MAKE_X( name ) name##_Test
80 #define MAKE_Y( name ) MAKE_X( name##_Sym )
81 MAKE_Y( Txt ); // Txt_Sym_Test;
84 /* Extensions -------------------------------------------------------------- */
87 #ident "(c)# Test.txt"
90 # error illegal machine
95 /* Last bug ----------------------------------------------------------------- */
96 #define Cfstrcpy Cstrcpy
97 #define Cstrcpy( s1, s2 ) strcpy( s1, s2 )
99 Cfstrcpy(Par1,Par2 ) // blub( Par1, Par2 )
101 /* ---------------------------------------------------------------------- */