Objective-C編程語言中含有一個預(yù)處理器,用于在編譯前處理源文件。
- 預(yù)處理器語言
- 預(yù)處理器指令
- 宏展開
預(yù)處理器指令
- 頭文件包含
- #imclude,#import
- 條件編譯
- #if,#elif,#else,#endif
- #ifdef,#ifndef
- 診斷
- #error,#warning,#line
- #pragma指令
宏展開
- #define 宏名 值 -->用宏名代替這個常量值
- #define 宏名(參數(shù)) 代碼 -->函數(shù)型宏
- 一般這樣使用 #define 宏名(參數(shù)) {代碼}
預(yù)處理器指令詳細說明
導(dǎo)入頭文件
-
#include “頭文件”或者<頭文件>
- “ ”,從存儲源文件的目錄中搜索頭文件,沒有的話在默認目錄中搜索。
- < >,從默認目錄中搜索
備注:默認目錄為預(yù)先配置的用于搜索系統(tǒng)標準頭文件的目錄
-
#import “頭文件”或者<頭文件>
- 與#include類似,不過此預(yù)編譯指令只會導(dǎo)入一次頭文件,不會重復(fù)導(dǎo)入,防止遞歸包含報錯。在Objective-C編程,建議只使用#import
條件編譯
類似于if...else if...else...條件判斷語句,合理利用條件編譯指令,可以靈活地設(shè)計在MRR或ARC中通用的類Class。
#if 條件
.........Objective-C源代碼,當(dāng)不成立時不編譯此段代碼
#elif 條件
.........Objective-C源代碼,當(dāng)不成立時不編譯此段代碼
#else
.........Objective-C源代碼,當(dāng)上面全不成立時編譯此段代碼
#endif
#ifdef 宏名
........如果宏已經(jīng)定義,執(zhí)行此處代碼
#endif
#ifndef
........如果宏未定義,執(zhí)行此處代碼
#endif
診斷
- #error
停止編譯,拋出錯誤信息
#error "錯誤信息" - #warning
不停止編譯,拋出警告信息
#warning "警告信息" - #line
#line 行號 “文件名”
#pragma指令
- #pragma - :代碼分割線
- #pragma mark 標簽名稱:區(qū)分標簽