標籤:objective-c 物件導向 先行編譯 條件編譯 預先處理
郝萌主傾心貢獻,尊重作者的勞動成果,請勿轉載。
如果文章對您有所協助,歡迎給作者捐贈,支援郝萌主,捐贈數額隨意,重在心意^_^
我要捐贈: 點擊捐贈
Cocos2d-X源碼下載:點我傳送
預先處理提供了一些工具,使用這些工具更易於開發、閱讀、修改程式,
也易於將程式移植到不同的系統中。
你也可以使用預先處理程式定製Objective-C語言,以適應特定應用的編程或自己的編程風格。
預先處理程式是Objective-C編譯過程的一部分,它可以識別散布在程式中的特定語句。
預先處理程式使用井號#標記,這個符號必須是一行中的第一個非空格字元。
#define語句:
#define語句的基本用途之一就是給符號名稱指定程式常量。
預定義名稱不是變數。因此,不能為它賦值,除非替換指定值的結果實際是一個變數。
#define語句經常放在程式的開始,但#import或include語句之後。
預定義的名稱和變數的行為方式不同:沒有局部定義之類的說法。
所有預定義的名稱都用大寫,這樣容易區分一個名稱是變數名、對象名、類名,還是預定義名稱。
事實上,預定義名稱一出現,預先處理程式就執行文本替換,
這可以解釋為什麼通常不能使用分號結束#define語句的原因。
注意,重新定義底層語言文法的(#define AND &&)行為通常不是好的編程習慣,
而且不容易讓他人理解你的代碼。
如果需要第二行,那麼上一行的最後一個字元必須是反斜線。\
注意,在定義有參數的名稱時,預定義名稱和參數列表的左括弧之前不允許空格。
後面使用參數的地方要用括弧括起來。
#define SQUARE(x) ((x) * (*))
#import語句:
預先處理程式允許你將所有的定義收集到一個單獨檔案中,然後使用#import語句把它們包含在程式中。
這個主要能區別“”,和<>。“”是在本地路徑查詢,<>是在系統路徑查詢。
條件編譯:
通常用於建立可以在不同的電腦系統上編譯啟動並執行程式,它還經常用來開關程式中的各種語句。
#ifdef, #endif, #else, #ifndef和#undef這些都和c語言一樣。
#ifdef DEBUG
#if defined (DEBUG)
作用是相同的。
#undef用於消除已經定義的名稱
Objective-C之成魔之路【13-預先處理程式】