2010-04-02 4 views

Répondre

13

Dans Infos du projet, pour une configuration de débogage, ajoutez une macro de préprocesseur de "DEBUG" (dans la section GCC 4.2 - Pré-traitement).

Dans votre code, vous pouvez utiliser #ifdef pour voir si DEBUG est défini si vous voulez que du code soit inclus ou non pour les versions de débogage. Ou vous pouvez même définir une variable (je ne peux pas imaginer pourquoi vous voulez cela):

#ifdef DEBUG 
    BOOL isBuiltDebug = YES; 
#else 
    BOOL isBuiltDebug = NO; 
#endif 

EDIT: Eh bien, une autre façon est de définir une valeur booléenne dans une macro préprocesseur, à savoir: « DEBUG_BUILD = 1 "pour la configuration du débogage et" DEBUG_BUILD = 0 "pour la configuration de la version. Ensuite, vous pouvez utiliser cette valeur dans votre code:

if (DEBUG_BUILD) { 
    .... 
} 

Faites juste attention de ne pas utiliser un nom de macro qui pourrait correspondre à un nom qui est déjà dans votre code ou dans un fichier .h que vous pouvez inclure soit, parce que le préprocesseur va le remplacer et c'est vraiment pénible de trouver ce genre de bugs.

+0

Le code va faire partie d'une tierce partie dist et, si possible, aimerait éviter #ifdef, mais peut vivre avec s'il n'y a pas d'autre solution. – lolsborn

+0

Je ne connais pas d'autre moyen que d'utiliser une macro de préprocesseur, mais vous pouvez éviter le #ifdef, voir ma modification ci-dessus. – progrmr

+0

Merci pour la réponse! –

5

Sans avoir à penser à la définition d'une macro préprocesseur personnalisé, vous pouvez simplement écrire une méthode personnalisée comme celui-ci:

+ (BOOL) isInDebugMode 
{ 
    #ifndef __OPTIMIZE__ // Debug Mode 
     return YES; 
    #else 
     return NO; 
    #endif 
} 

Ou il suffit d'écrire votre code en ligne dans ces déclarations:

#ifndef __OPTIMIZE__ // Debug Mode 
     // Your debug mode code 
    #else 
     // Your release mode code 
    #endif 

Le paramètre __OPTIMIZE__ du préprocesseur est automatiquement défini par le compilateur en fonction des paramètres de votre projet, vous n'avez donc pas à vous en soucier.

Questions connexes