c++學習總結:define的小細節

在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__判斷存在的緣由了。博客

相關文章
相關標籤/搜索