2011-01-21 4 views
0

Я хочу знать об использовании #ifdef, #ifndef и #endif и в каком случае использовать эти условные обозначения и использовать их? В чем разница между #ifdef и #ifndef?В чем смысл использования директив #ifdef и #endif в iPhone?

Для например:

#define MY_Global 

#ifdef MY_Global 
    // write some code (Inside the method) 
#endif 

или

#ifdef MY_Global 
    -(void) customMethod 
    { 
     // Do something 
    } 
    #endif 

Какой из них правильный, должен ли он писать только внутри метода или это не работает за пределами метода ?. Я раньше этого не использовал. так, пожалуйста, Объясните меня?

Спасибо!

+0

Второй вариант означает, что 'customMethod' будет полностью отсутствовать, если' MY_Global' не определен – BoltClock

ответ

2

AFAIK, #ifdef = "if defined" и #ifndef = "if not defined". Эти условные полезны, например, если вы хотите определенный код, который будет составлены только для симулятора, то вы бы написать что-то вроде:

#if TARGET_IPHONE_SIMULATOR 
    #import "AccelerometerSimulation.h" 
    #endif 

Что означает, когда вы собираете для симулятора, AccelerometerSimulation.h будут импортированы. Если вы компилируете устройство, оно полностью игнорируется. Надеюсь, это поможет.

+1

Вы можете написать '#if defined (NAME)' и '#if! Defined (NAME)' вместо '#ifdef NAME' и '#ifndef NAME'. Это также позволяет тестировать определение нескольких имен за один раз: '#if defined (NAME1) && defined (NAME2)'. –

Смежные вопросы