jak opakować fprintf w funkcję?

0

Witam
Zamiast wywoływac za każdym razem:

#ifdef PHYSIC_DEBUG
	if(mFile)
		fprintf(mFile, "mV = %f %f %f\n", mV.x, mV.y, mV.z);
    #endif

chciałbym wywoływać po prostu jakąś jedną funkcję a wszystko byłoby opakowane w niej. Jak coś takiego zrobić?

0
  • varargs
  • makro z flakami

Co konkretnie chcesz uzyskać?

0

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);

1 użytkowników online, w tym zalogowanych: 0, gości: 1