Odpowiedz

44

/# jeśli działa jak zwykle, jeżeli:

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

/# ifdef znaczy "jeśli określona - niektóre wartości lub makra":

#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 

czyli

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

Użyj ten link, aby uzyskać więcej informacji http://www.techotopia.com/index.php/Using_Objective-C_Preprocessor_Directives

Aby sprawdzić, czy działa iPad czy nie powinieneś mieć smth takiego:

#define USING_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 

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

Oto kolejny użytecznych funkcji preprocesora:

#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

Dzięki. Aby się upewnić: czy #define IPAD_BUILD wystarczy, aby go zdefiniować (bez żadnych wartości?) Czy w tym przypadku #ifdef IPAD_BUILD zwrócił wartość true? – Geri

+0

Wygląda tak ._____ – Geri

+0

faktycznie nie =) Będę zmienić odpowiedź. – Stas

9

Makro może być zdefiniowana, to można zdefiniować bez wartości lub może być określony pewną wartością, ewentualnie liczbą. Przykłady:

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

#ifdef MAKRO lub zdefiniowany #if (MACRO) sprawdza, czy makro jest zdefiniowane, z wartością lub bez niej.

#if MAKRO zastępuje definicję makra; jeśli makro nie jest zdefiniowane, to zastępuje 0. Następnie ocenia znalezione wyrażenie. Jeśli weźmiemy pięć powyższych przykładów, #if MAKRO zostanie zamienione na

#if 0 
#if 
#if ?????? 
#if 0 
#if 1 
Liczba 2 i 3 dają błąd czasu kompilacji. Liczba 1 i 4 oceniają wartość fałsz, więc poniższy kod jest pomijany. Numer 5 jest prawdziwy.

#if jest bardziej elastyczny: Można napisać

#if MACRO == 2 

który będzie kompilować tylko następujący kod Jeśli makro zostało zdefiniowane na przykład jako

#define MACRO 2 
Powiązane problemy