[iOS] #ifndef的含義以及OS版本偵測的內部變數

藉由OS版本偵測的變數,我們來看一些語法的含義。

請參考下列的code:

#ifndef __IPHONE_OS_VERSION_MIN_REQUIRED
    #ifdef __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
        /* compiler sets __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ when -miphoneos-version-min is used */
        #define __IPHONE_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
    #endif

#endif

我們一行一行看。

首先第一行是說,如果沒有定義__IPHONE_OS_VERSION_MIN_REQUIRED,那就執行下面的code。

第二行之後到倒數第二行,這是在__IPHONE_OS_VERSION_MIN_REQUIRED沒有被定義的情況下會執行的。

第二行是說,如果有定義__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__,那麼就(在第四行)定義__IPHONE_OS_VERSION_MIN_REQUIRED吧!

第四行是把__IPHONE_OS_VERSION_MIN_REQUIRED定義成__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__。

第三行是說只要miphoneos-version-min有使用,編譯器會設定好__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__。


結論:
  • #ifndef:如果沒有定義,需搭配#endif
  • #ifdef:如果有定義,需搭配#endif
  • #define:定義,語法為#define X Y,意思是將X定義成Y
  • __IPHONE_OS_VERSION_MIN_REQUIRED:做為定義最小需求的iOS版本,使用方法,例如:

    __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_1

    此乃表示最小版本需大於3.1版,可以使用
    __IPHONE_3_1此一關鍵字去尋找內部定義的版本變數。


留言