void call();
struct S {
static void foo() { call(); call(); }
static void bar() { call(); call(); }
static void baz() {}
};
#ifdef FILE1
# define FUNC_NAME func1
# define FUNC_BODY \
S::foo(); S::bar(); S::baz();
#else
# define FUNC_NAME func2
# define FUNC_BODY \
S::bar();
#endif
void FUNC_NAME() {
FUNC_BODY
}
// Build instructions:
// $ clang -g -fPIC -c -DFILE1 arange-overlap.cc -o obj1.o
// $ clang -g -fPIC -c arange-overlap.cc -o obj2.o
// $ clang -shared obj1.o obj2.o -o <output>