Проверка пустого определения макроса

У меня есть набор отладочных макросов в tracing.hh. Генерирует ли он код и вывод, контролируется макросом в реальном исходном коде:

// File:  foo.cc
#define TRACING 0
#include "tracing.hh"
// Away we go . . .
TRACEF("debug message");

Флаг TRACING должен иметь значение; Обычно я переключаюсь между 0 и 1.

В файле tracing.h

  • #ifdef TRACING сообщит мне, что трассировка была определена.
  • #if TRACING управляет определением функциональных макросов, таких как TRACEF ()

Но что, если TRACING не имеет значения? Затем #if TRACING вызывает ошибку:

In file included from foo.c:3:
tracing.hh:73:12: error: #if with no expression

Как я могу проверить, определена ли TRACING, но не имеет значения?

21
задан pdbj 9 November 2010 в 16:19
поделиться