The problem is that you have to compile the C library with either one definition or another; both can't be available to your template at once. Anyway, that shouldn't effect how you call the functions (as per your example). You could simply write:
Code:
void MyClass::MyExample () {
SomeType a, b;
start();
create(&a);
create(&b);
something(&a, &b, this->c);
destroy(&a);
destroy(&b);
}
If you're capturing the return value, just be sure to define an integer type compatible with the C library, ie:
Code:
#ifdef USINGLONG
#define MY_INT_TYPE long int
#else
#define MY_INT_TYPE int
#endif