2010-04-02 11 views

Respuesta

13

En la información del proyecto, para una configuración de depuración, agregue una macro de preprocesador de "DEPURACIÓN" (en la sección 4.2 del preprocesamiento de GCC).

En su código, puede usar #ifdef para ver si se define DEBUG si desea que se incluya algún código o no para las compilaciones de depuración. O incluso se puede establecer una variable (no puedo imaginar por qué desea esto):

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

EDIT: Bueno, es otra manera de definir un valor booleano en un preprocesador de las macros, es decir: "DEBUG_BUILD = 1 "para la configuración de depuración, y" DEBUG_BUILD = 0 "para la configuración de la versión. A continuación, puede utilizar ese valor en el código:

if (DEBUG_BUILD) { 
    .... 
} 

Sólo tenga cuidado de no utilizar un nombre de macro que podría coincidir con un nombre que ya está en su código o en cualquier archivo .h que podría incluir ya sea porque el preprocesador lo reemplazará y es un verdadero dolor encontrar ese tipo de errores.

+0

El código va a formar parte de un dist de terceros y, si es posible, le encantaría evitar #ifdef, pero puede vivir con él si no hay otra solución. – lolsborn

+0

No conozco otra manera que no sea utilizar una macro de preprocesador, pero puede evitar el #ifdef, vea mi edición anterior. – progrmr

+0

¡Gracias por la respuesta! –

5

Sin tener que pensar en la definición de una macro preprocesador personalizado, puede simplemente escribir un método personalizado como éste:

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

O simplemente escribir su código en línea dentro de esas declaraciones:

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

La configuración del preprocesador __OPTIMIZE__ establecida automáticamente por el compilador con respecto a la configuración de su proyecto, para que no tenga que preocuparse por ello.

Cuestiones relacionadas