В нашем кроссплатформенном c-проекте мы используем макрос для регистрации:
#if _WINDOWS
#define DEBUG_PRINTF(x) KdPrint(x)
#endif
Пример использования DEBUG_PRINTF
:
DEBUG_PRINTF(("Message with param (%s)\n", pString)); // (1)
DEBUG_PRINTF(("Message with no param\n")); // (2)
Это нормально. Согласно справочнику KdPrint вызов KdPrint требует двойных скобок:
KdPrint (( Format, arguments ))
KdPrintEx (( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments ))
Мой вопрос заключается в том, как обращаться с уже существующими макросами, такими как (1)
и (2)
, путем переноса DEBUG_PRINTF
на другую платформу, такую как linux, в userspace ?
Например, определение
#if defined (__LINUX__)
#define DEBUG_PRINTF((x)) fprintf(stderr, x)
#endif
не компилируется для макросов, таких как (1)
.