1 void call(); 2 3 struct S { fooS4 static void foo() { call(); call(); } barS5 static void bar() { call(); call(); } bazS6 static void baz() {} 7 }; 8 9 #ifdef FILE1 10 # define FUNC_NAME func1 11 # define FUNC_BODY \ 12 S::foo(); S::bar(); S::baz(); 13 #else 14 # define FUNC_NAME func2 15 # define FUNC_BODY \ 16 S::bar(); 17 #endif 18 FUNC_NAME()19void FUNC_NAME() { 20 FUNC_BODY 21 } 22 23 // Build instructions: 24 // $ clang -g -fPIC -c -DFILE1 arange-overlap.cc -o obj1.o 25 // $ clang -g -fPIC -c arange-overlap.cc -o obj2.o 26 // $ clang -shared obj1.o obj2.o -o <output> 27