Ho una serie di macro di debug in tracing.hh. Sia che si genera il codice e l'uscita è controllata da una bandiera macro nel codice sorgente reale:Test per definizione macro vuota
// File: foo.cc
#define TRACING 0
#include "tracing.hh"
// Away we go . . .
TRACEF("debug message");
rintracciamento bandiera dovrebbe avere un valore; Io di solito alternare tra 0 e 1.
All'interno tracing.h,
#ifdef TRACING
mi dirà che il tracciamento è stato definito.#if TRACING
controlli la definizione di macro funzionali comeTRACEF()
Ma cosa succede se questa funzionalità non ha alcun valore? Poi #if TRACING
produce un errore:
In file included from foo.c:3:
tracing.hh:73:12: error: #if with no expression
Come posso verificare se questa funzionalità è definito, ma non ha alcun valore?
Quasi, penso. Guarda la prossima risposta: – pdbj
Questo purtroppo non funzionerà. Incontrerai lo stesso problema, dove verrà rimosso TRACING. Finirai con qualcosa del tipo: "#if definito (TRACING) &&!". Quindi, "errore: operatore '!' non ha un operando corretto "aumenterà al momento della compilazione. – ForceMagic