// sum.c: #define INCR 2 void trace(void*); static int count; template<class T> T sum(vector<T>& v) { count += INCR; trace(v); T r = 0; for (int i = 0; i < v.size(); i++) r += v[i]; } // user.c (inclusion style) #define trace my_tracer #define INCR(v) (v)++ extern int count; #include "sum.c" void g(vector<int>& vi) { int s = sum(vi); } // End of File