Respuesta

44

/# si funciona como de costumbre si:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    return YES; 
    } 
#endif 
    return NO; 
} 

/#ifdef significa "si se ha definido - un cierto valor o macros":

#ifdef RKL_APPEND_TO_ICU_FUNCTIONS 
#define RKL_ICU_FUNCTION_APPEND(x) _RKL_CONCAT(x, RKL_APPEND_TO_ICU_FUNCTIONS) 
#else // RKL_APPEND_TO_ICU_FUNCTIONS 
#define RKL_ICU_FUNCTION_APPEND(x) x 
#endif // RKL_APPEND_TO_ICU_FUNCTIONS 

o:

#ifdef __OBJC__ 
    #import <Foundation/Foundation.h> 
#endif 

Uso este enlace para más información http://www.techotopia.com/index.php/Using_Objective-C_Preprocessor_Directives

Para probar si se ejecuta IPAD o no usted debe tener algo bajo la siguiente manera:

#define USING_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 

if (USING_IPAD) { 
    NSLog(@"running iPad"); 
} 

Aquí hay otro funciones de preprocesador útiles:

#ifdef DEBUG 
    //here we run application through xcode (either simulator or device). You usually place some test code here (e.g. hardcoded login-passwords) 
#else 
    //this is a real application downloaded from appStore 
#endif 
+0

Gracias. Para estar seguro: ¿Es suficiente #define IPAD_BUILD para definirse (sin ningún valor?) ¿Sería #ifdef IPAD_BUILD verdadero en este caso? – Geri

+0

Parece que sí ._____ – Geri

+0

en realidad no =) Voy a cambiar la respuesta. – Stas

9

Una macro puede ser indefinido, que se puede definir sin valor o puede definirse con algún valor, posiblemente un número. Ejemplos:

#undef MACRO 
#define MACRO 
#define MACRO ?????? 
#define MACRO 0 
#define MACRO 1 

#ifdef MACRO o #if controles definidos (macro) si la macro se define, con o sin valor.

#if MACRO sustituye la definición de macro; si la macro no está definida, entonces sustituye 0. A continuación, evalúa la expresión que encuentra. Si tomamos los cinco ejemplos anteriores, #if macro será convertido en

#if 0 
#if 
#if ?????? 
#if 0 
#if 1 

Número 2 y 3 dan un error de tiempo de compilación. El número 1 y 4 se evalúan como falso, por lo que se omite el siguiente código. El número 5 se evalúa como verdadero.

#if es más flexible: Se puede escribir

#if MACRO == 2 

que sólo compilará el código siguiente si se define la macro por ejemplo como

#define MACRO 2 
Cuestiones relacionadas