Вы можете попробовать использовать макрос для каждой функции, а затем просто определить его в зависимости от вашего макроса MYMATH. Также, если вы предпочитаете избегать такого рода макросов, вы можете использовать generic c lambda в качестве оболочки.
MyMath.hpp
1.- С макросами для каждой функции
#ifdef MYMATH
#define imp_sin(x) f_sin(x)
#else
#include <cmath>
#define imp_sin(x) std::sin(x)
#endif
2. С generi c лямбда (C ++ 14)
#define glambda(x) [](auto y){ return x(y); }
#ifdef MYMATH
auto imp_sin = glambda(f_sin);
#else
#include <cmath>
auto imp_sin = glambda(std::sin);
#endif
#undef glambda //Or not if you want to keep this helper
Основное использование. cpp
#include "MyMath.hpp"
int main(int, char**) {
imp_sin(3.4f);
return 0;
}