Jeśli wywołanie wygląda za każdym razem identycznie:
#ifdef PHYSIC_DEBUG
#define LOG_DEBUG do \
{ \
if(mFile) \
fprintf(mFile, "mV = %f %f %f\n", mV.x, mV.y, mV.z); \
} while (0)
#else
#define LOG_DEBUG do {} while (0)
#endif
Przykład wywołania:
LOG_DEBUG;
W przeciwnym przypadku:
#ifdef PHYSIC_DEBUG
#define LOG_DEBUG(file, ...) do \
{ \
if(file) \
fprintf(file, __VA_ARGS__); \
} while (0)
#else
#define LOG_DEBUG(...) do {} while (0)
#endif
Przykład wywołania:
LOG_DEBUG(anyFile, "anyValue = %f %f %f\n", anyValue.x, anyValue.y, anyValue.z);