#ifdef DEBUG versus #if DEBUG

Il est clair pour moi lors de l'utilisation des directives de compilation qui de ci-dessous deux extraits de code est correct/préféré et pourquoi. Il semble que la plupart des développeurs et les projets Open Source que j'ai vu utiliser le premier, mais j'ai vu le deuxième fréquemment utilisé en tant que bien.

#ifdef DEBUG
[self doSomethingOnlyWhenDebugging];
#endif

CONTRE

#if DEBUG
[self doSomethingOnlyWhenDebugging];
#endif

Dont le code ci-dessus des extraits est préférable pour l'exécution de code seulement pendant le débogage et pourquoi? Ma conjecture est que le premier d'exécution si le DÉBOGAGE est définie comme TRUE ou FALSE si la seconde ne fonctionnera que si le DÉBOGAGE est défini et mis à TRUE. Est-ce exact?

  • #ifdef simplement des tests, si le symbole est pas définie. #if teste la VALEUR du symbole. donc #define FOO 0 fera #ifdef FOO être vrai, mais #if FOO être faux, parce que c'est de faire des #if 0.
  • Vous devez tenter de trouver la "racine" de la définition et de déterminer si la valeur est destiné à être un 1/0 valeur ou un présent/absent. Se tromper peut avoir "inattendue" des conséquences.
InformationsquelleAutor lidsinker | 2013-04-26