Tengo un conjunto de macros de depuración en tracing.hh. Tanto si se genera el código y la salida es controlada por una bandera macro en el código fuente real:Prueba de definición de macro vacía
// File: foo.cc
#define TRACING 0
#include "tracing.hh"
// Away we go . . .
TRACEF("debug message");
El trazado bandera debe tener un valor; Por lo general alternar entre 0 y 1.
Dentro tracing.h,
#ifdef TRACING
me dirá que el seguimiento se definió.#if TRACING
controla la definición de macros funcionales comoTRACEF()
pero lo que si RASTREO no tiene valor? Entonces #if TRACING
produce un error:
In file included from foo.c:3:
tracing.hh:73:12: error: #if with no expression
¿Cómo se puede probar que si se define RASTREO pero no tiene valor?
Casi, creo. Ver la respuesta siguiente: – pdbj
Desafortunadamente, esto no funcionará. Encontrará el mismo problema, donde se eliminará el RASTREO. Usted terminará con algo como: "# si está definido (RASTREO) &&!". Por lo tanto, "error: operator '!' no tiene un operando correcto "aumentará en tiempo de compilación. – ForceMagic