func.cpp
#include <cassert>
double func1(double val)
{
return val+1;
}
double func1(int val)
{
assert(0);
return val+1;
}
main.cpp
#include <iostream>
#define USE_INT_FUNCTION
double func1(int);
#ifdef USE_INT_FUNCTION
double func2(double val)
{
return func1(val-1);
}
#endif
double func1(double);
#ifndef USE_INT_FUNCTION
double func2(double val)
{
return func1(val-1);
}
#endif
int main()
{
std::cout<<func2(0.5)<<std::endl;
std::cin.get();
}
вот еще один пример - в зависимости от того, закоментирован дефайн или нет, оно или падает или нет.