/ * inicializa a cero, puede extenderse como unsigned long * /
application_debug unsigned char;
# define ENABLE_DEBUG_FLAG_LEVEL_0 , (1 <<0)
# define ENABLE_DEBUG_FLAG_LEVEL_1 (1 <<1)
/ * Generalmente LOGS se habilitan durante TIEMPO
* Activar registros de depuración * / # define
MUNI_DEBUG_ON (valor) (application_debug | = ENABLE_DEBUG_FLAG_ # # value)
/ * OFF * / # define
MUNI_DEBUG_OFF (valor) (application_debug & = ~ ENABLE_DEBUG_FLAG_ # # value) />
/ * Aquí application_debug es inicializado para Zero
* Cuando el código llama a este MUNI_DEBUG Macro (LEVEL_0) conduce a application_debug y
* ENABLE_DEBUG_FLAG_ # # = application_debug y ENABLE_DEBUG_FLAG_LEVEL_0 ;
* ( # # «concatena el valor dado en la Macro)
* /
# define MUNI_DEBUG (valor) (application_debug y ENABLE_DEBUG_FLAG_ # # value)
/ * Definir LOG_DEBUG * /
# define LOG_DEBUG (fmt, args …) printf />
sample_program.cc
# include
# include «Debug.h»
int main ()
{/>
no
{cout <;
cout <
/ / TALA
if (nivel == 1) {
MUNI_DEBUG_ON (LEVEL_0);}
else if (nivel == 2)
{
MUNI_DEBUG_ON (LEVEL_1);}
else if (nivel == 3 )
{MUNI_DEBUG_OFF (LEVEL_0);}
else if (nivel == 4) {
MUNI_DEBUG_OFF (LEVEL_1);
}
else {cout <<"Invalid Input "<
/ / Si DEBUG_LEVEL_0 está activada, sólo imprimir el registro
if (MUNI_DEBUG (LEVEL_0))
{LOG_DEBUG
(» NIVEL 0 LOG: El valor de X es cero «);}
cout <
{ ; LOG_DEBUG («NIVEL 1 LOG: El valor de X es cero»);}
if (! (MUNI_DEBUG (LEVEL_0)) &&! (MUNI_DEBUG (LEVEL_1)))
; {LOG_DEBUG />
}
cout <
else { ;
/ / Si DEBUG_LEVEL_0 está activada, sólo imprimir el
LOG if (MUNI_DEBUG (LEVEL_0))
{ LOG_DEBUG («NIVEL 0 LOG: El valor de X no es cero y su valor:% d», X);
;}
cout <
/ / Si DEBUG_LEVEL_1 está activada, sólo imprimir el registro
if (MUNI_DEBUG (LEVEL_1))
; {LOG_DEBUG />
if (! (MUNI_DEBUG (LEVEL_0)) &&! (MUNI_DEBUG (LEVEL_1)))
; {
LOG_DEBUG («NO niveles de depuración (LEVEL_0 y LEVEL_1) REGISTROS están habilitados «);}
}
;} while (level! = 100); / / Salir
vuelta 0;}