2010-04-02 17 views

risposta

13

Nel progetto Informazioni, per una configurazione di debug, aggiungere una macro di preprocessore di "DEBUG" (nella sezione GCC 4.2 - Preelaborazione).

Nel codice è possibile utilizzare #ifdef per verificare se DEBUG è definito se si desidera inserire o meno del codice per le build di debug. Oppure si può anche impostare una variabile (non riesco a immaginare perché si vorrebbe questo):

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

EDIT: Bene, un altro modo è quello di definire un valore booleano in un preprocessore macro, vale a dire: "DEBUG_BUILD = 1 "per la configurazione di debug e" DEBUG_BUILD = 0 "per la configurazione di rilascio. Quindi è possibile utilizzare tale valore nel codice:

if (DEBUG_BUILD) { 
    .... 
} 

Basta essere attenti a non utilizzare un nome di macro che potrebbe corrispondere a un nome che è già nel codice o in qualsiasi file .h che si potrebbe includere sia, perché il preprocessore lo sostituirà ed è un vero dolore trovare questi tipi di bug.

+0

Il codice farà parte di un dist di terze parti e se possibile vorrebbe evitare #ifdef, ma può convivere con esso se non c'è altra soluzione. – lolsborn

+0

Non conosco un altro modo se non usare una macro del preprocessore, ma puoi evitare il #ifdef, vedi la mia modifica sopra. – progrmr

+0

Grazie per la risposta! –

5

Senza dover pensare a definire una macro preprocessore personalizzato, si può semplicemente scrivere un metodo personalizzato come questo:

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

O semplicemente scrivere il codice inline all'interno di tali dichiarazioni:

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

L'impostazione del preprocessore __OPTIMIZE__ viene impostata automaticamente dal compilatore in base alle impostazioni del progetto, quindi non devi preoccuparti di ciò.

Problemi correlati