tengo la siguiente macro:C preprocesador con la sentencia if
#define IF_TRACE_ENABLED(level) if (IsTraceEnabled(level))
El código de usuario debe buscar siguiente:
IF_TRACE_ENABLED(LEVEL1)
{
... some very smart code
}
El énfasis aquí en corchetes - Quiero evitar el "si" de macro "comer" otro código:
if (...)
IF_TRACE_ENABLED(LEVEL1)
printf(....);
else
bla bla bla
En este ejemplo IF_TRACE_ENABLED
"come" bloque else.
¿Hay forma de hacer cumplir el código de usuario no compilar sin los frenos o hay otros para definir la macro para lograr la seguridad?
No veo lo que esa macro le da sobre la declaración desnuda si. – JeremyP
Olvídate de este ejemplo. Podría tener una condición complicada en ese 'si' que no desea repetir cada vez. –
@JeremyP: no hay mucha utilidad en tener una macro para este ejemplo simple, pero como Nathan indica que es posible que haya más complejidad en la macro de depuración y/o que haya varias variaciones de la macro en función de la configuración de compilación (para ejemplo, una versión de lanzamiento que siempre se evalúa como 'false' para que las cadenas de rastreo se eliminen del ejecutable). –