У меня есть набор отладочных макросов в tracing.hh. Будь то генерирует код и выход управляется макро флагом в режиме реального исходного кода:Тест для определения пустого макроса
// File: foo.cc
#define TRACING 0
#include "tracing.hh"
// Away we go . . .
TRACEF("debug message");
трассировку флаг должен иметь значение; Я обычно переключаться между 0 и 1.
В tracing.h,
#ifdef TRACING
скажет мне, что трассировка была определена.#if TRACING
управляет определение функциональных макросов, какTRACEF()
Но что, если трассировка не имеет значения? Затем #if TRACING
выдает ошибку:
In file included from foo.c:3:
tracing.hh:73:12: error: #if with no expression
Как я могу проверить, если трассировка определено, но не имеет никакого значения?
Почти, я думаю. См. Следующий ответ: – pdbj
Это, к сожалению, не сработает. Вы столкнетесь с той же проблемой, когда TRACING будет удален. У вас будет что-то вроде: «#if defined (TRACING) &&!». Таким образом, «error: operator»! не имеет права операнд "будет расти во время сборки. – ForceMagic