iOS DEBUG和RELEASE 中的 #ifdef和#if

First blood. 首先來說說DEBUG和RELEASE

iOS中,我們經(jīng)??吹接衐ebug和release兩種模式。其實這兩種模式分別表示發(fā)行版本和調(diào)試版本。

兩種版本中打包的不同設置可以參考:iOS編譯策略Optimization Level問題

Double Kill.來說說#ifdef和#if

#ifdef指的是如果定義了

#if指的基本上就和if語句差不多,這里我不細說(因為不是重點了)

Triple Kill.劃重點了啊(敲黑板啦~~~)

比如說:

#ifdef

//我先做一些事情

#else

//我又不想干了.你打我啊

#endif

就是指如果定義了DEBUG,然后怎么怎么地,布拉布拉布拉,我就不寫,你打我啊.

這句話作為一個iOS開發(fā)我們經(jīng)常寫,但是你們有沒有想過

DEBUG哪兒來的?????在哪兒定義的?????誰定義的??????

上截圖:

第一張是別人項目的此處有個問題:DEBUG 在Debug和Release中都有定義

那么問題來了,這時候是用#ifdef還是#if嘞?自己試去吧.kid

第二張是我自己項目的,沒啥說的.這兩張圖僅僅是個對比~~~



Quadra Kill.后記

#if的使用說明

#if的后面接的是表達式

#if (MAX==10)||(MAX==20)

code...

#endif

它的作用是:如果(MAX==10)||(MAX==20)成立,那么編譯器就會把其中的#if 與 #endif之間的代碼編譯進去(注意:是編譯進去,不是執(zhí)行?。。?/p>

#if defined的使用

#if后面接的是一個宏。

#if defined (x)

...code...

#endif

這個#if defined它不管里面的“x”的邏輯是“真”還是“假”它只管這個程序的前面的宏定義里面有沒有定義“x”這個宏,如果定義了x這個宏,那么,編譯器會編譯中間的…code…否則不直接忽視中間的…code…代碼。

另外 #if defined(x)也可以取反,也就用 #if !defined(x)

#ifdef的使用

#ifdef的使用和#if defined()的用法一致

#ifndef又和#if !defined()的用法一致。

最后強調(diào)兩點:

第一:這幾個宏定義只是決定代碼塊是否被編譯!

第二:別忘了#endif

Legendary Kill.你想啥呢,還想看五殺,趕緊點贊!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • C中的預編譯宏定義 2009-02-10 作者: infobillows 來源:網(wǎng)絡 在將一個C源程序轉(zhuǎn)換為可執(zhí)行...
    白水灬煮一切閱讀 1,729評論 0 5
  • 目錄 一.預處理的工作方式... 3 1.1.預處理的功能... 3 1.2預處理的工作方式... 3 二.預處理...
    朱森閱讀 1,542評論 0 2
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,051評論 0 9
  • 文|音階的88種情緒 1、 小竹子坐在我身邊突然哭了。當時我倆正一起參加一個慈善機構(gòu)辦的媒體活動。 我問,怎么了?...
    音階的88種情緒閱讀 2,378評論 6 13
  • 家鄉(xiāng)的春日被喚作無可是我卻分明看到春的存在那花那樹那草那天我在意的我不在意的真的不重要 你存在在你的存在里我存在于...
    樹妮兒閱讀 369評論 1 0

友情鏈接更多精彩內(nèi)容