101 lines
2.3 KiB
Text
101 lines
2.3 KiB
Text
|
|
#define ABC \
|
|
ggg
|
|
|
|
ABC
|
|
|
|
/* Standards --------------------------------------------------------------- */
|
|
|
|
#define NOTHING
|
|
NOTHING
|
|
|
|
#define SYMBOL symbol
|
|
#undef SYMBOL
|
|
#define SYMBOL _symbol_
|
|
|
|
< SYMBOL > // < _symbol_ >
|
|
xSYMBOLx // xSYMBOLx
|
|
+SYMBOL- // +_symbol_-
|
|
>SYMBOL< // >_symbol_<
|
|
<SYMBOL> // <_symbol_>
|
|
|
|
#define FALSE 0
|
|
#define TRUE !FALSE
|
|
a = x > 0 ? TRUE : FALSE // a = x > 0 ? !0 : 0
|
|
|
|
#define A x
|
|
#define B y
|
|
#define MAC(a, b) \
|
|
T() { a(); return b; } // T() { x(); return y; }
|
|
MAC(A,B);
|
|
|
|
#ifdef MAC
|
|
MAC(X,Y)
|
|
#endif // MAC
|
|
|
|
/* Recursions -------------------------------------------------------------- */
|
|
|
|
#define y x
|
|
#define x y
|
|
x // x
|
|
|
|
#define Test(a) a
|
|
#define b Test(b)
|
|
a = b; // a = b;
|
|
|
|
#define func abc(func)
|
|
a = func // a = abc(func)
|
|
|
|
#define func1 func(abc)
|
|
a = func1 // a = abc(func)(abc)
|
|
|
|
#define args(func, args) func args
|
|
args(t1, (args(t2, (x, y)))) // t1 (t2 (x, y))
|
|
|
|
#define ARGS(a) a
|
|
#define __ ARGS
|
|
int foo __((int x)); // int foo (int x);
|
|
|
|
/* Concatinations ---------------------------------------------------------- */
|
|
|
|
#define tail _Test
|
|
// Txt_##tail // Txt_##_Test
|
|
|
|
#define z(e,f) e##_##f
|
|
z ( abc, xyz ) // abc_xyz
|
|
|
|
|
|
#define CAT( var ) fix##.var
|
|
CAT( a ) // fix.a
|
|
|
|
#define CAT3( class, ref ) class##ref::class##ref
|
|
CAT3( a, b ) // ab::ab
|
|
|
|
#define CAT2( var ) fix##var::fix##var
|
|
CAT2( a ) // fixa::fixa
|
|
|
|
/* Extrems ----------------------------------------------------------------- */
|
|
|
|
#define MAKE_X( name ) name##_Test
|
|
#define MAKE_Y( name ) MAKE_X( name##_Sym )
|
|
MAKE_Y( Txt ); // Txt_Sym_Test;
|
|
|
|
|
|
/* Extensions -------------------------------------------------------------- */
|
|
|
|
/*
|
|
#ident "(c)# Test.txt"
|
|
|
|
#if #machine(i386)
|
|
# error illegal machine
|
|
#endif
|
|
char machine[6];
|
|
*/
|
|
|
|
/* Last bug ----------------------------------------------------------------- */
|
|
#define Cfstrcpy Cstrcpy
|
|
#define Cstrcpy( s1, s2 ) strcpy( s1, s2 )
|
|
|
|
Cfstrcpy(Par1,Par2 ) // blub( Par1, Par2 )
|
|
|
|
/* ---------------------------------------------------------------------- */
|