在iOS開發中,咱們能夠使用#ifdef或者#ifndef來進行一些判斷,這在我以前的博客中已經有所說明。今天我無心中又發現了一個小細節,總結起來就是預編譯判斷的兩種方式,特在此與你們分享。linux
(1)第一種方式使用#ifdef框架
咱們能夠這樣使用#ifdef,以下代碼所示,code
#define DebugEnable #ifdef Debug_Enable NSLog(@"Debug Enable"); #else NSLog(@"Debug Unable"); #endif
這時候若是咱們定義了Debug_Enable宏,則編譯上面的代碼;反之編譯下面的代碼。orm
(2)第二種方式使用#if defined(...),以下代碼所示開發
#if defined(__APPLE__) NSLog(@"Apple Platform"); #else if defined(__linux__) NSLog(@"linux Platform"); #endif
這段代碼是在真機運行的時候,判斷是在什麼平臺上面,好比__APPLE__表示在蘋果的OS X或者iOS平臺,而__linux__宏表示在linux平臺。同步
有人會問爲何要寫這些宏判斷語句呢?我也是剛剛想通的,我公司的項目不只在iOS平臺,在linux平臺也在同步開發,底層使用的框架在兩個平臺都能使用,可是兩個平臺的東西也並不徹底同樣,因此要特殊說明哪些功能是在iOS平臺使用,哪些功能是在linux平臺使用。這樣就是__APPLE__和__linux__判斷存在的緣由了。博客