J'ai la macro suivante:C préprocesseur avec instruction if
#define IF_TRACE_ENABLED(level) if (IsTraceEnabled(level))
Le code utilisateur doit regarder ce qui suit:
IF_TRACE_ENABLED(LEVEL1)
{
... some very smart code
}
L'accent ici sur accolades - Je veux éviter "si" de macro pour "manger" autre code:
if (...)
IF_TRACE_ENABLED(LEVEL1)
printf(....);
else
bla bla bla
Dans cet exemple IF_TRACE_ENABLED
"mange" bloc autre.
Existe-t-il un moyen d'appliquer le code utilisateur non compilé sans les freins bouclés ou existe-t-il d'autres pour définir la macro pour assurer la sécurité?
Je ne vois pas ce que cette macro vous donne par-dessus la simple instruction if. – JeremyP
Oubliez cet exemple. Vous pourriez avoir une condition compliquée dans ce 'si 'que vous ne voulez pas répéter à chaque fois. –
@JeremyP: il n'y a pas beaucoup d'utilité à avoir une macro pour cet exemple simple, mais comme Nathan indique qu'il est possible qu'il y ait plus de complexité dans la macro de débogage et/ou qu'il y ait plusieurs variantes de la Par exemple, une version de version qui évalue toujours 'false' de sorte que les chaînes de trace sont retirées de l'exécutable). –