/* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #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_> #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); /* Concatenations */ #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 /* Extremes */ #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 )