Иногда я использовал хитрость - использование битовой маски для включения подмножества файлов, в которых используется TRACE: File1.c:
#if TRACE_MASK & 0x01
#define TRACE(x) ...
#endif
File2.c:
#if TRACE_MASK & 0x02
#define TRACE(x) ...
#endif
... Затем вы можете определить свой макрос TRACE_MASK в параметрах предварительной обработки: / DTRACE_MASK = 0x03, чтобы включить трассировку как для File1.c, так и для File2.c Единственная проблема заключается в том, что число битов ограничено... (но вы можете использовать более одного макроса: TRACE_MASK1, TRACE_MASK2 ...) Пока
РЕДАКТИРОВАТЬ: конечно, вы можете написать tdefinition один раз в файле "trace.h" и просто переопределить маскув каждом источнике:
Файл trace.h:
#if TRACE_MASK & TRACE_CURRENT
#define TRACE(x) ...
#else
#define TRACE(x) do {} while(0)
#endif
File1.c:
#define TRACE_CURRENT 0x01
#include "trace.h"
File2.c:
#define TRACE_CURRENT 0x02
#include "trace.h"