- 基本預(yù)編譯指令
#include
將指定頭文件嵌入源文件中张漂。
#define
宏定義 - 條件預(yù)編譯指令 (
#ifdef
、#else
、#endif
烛谊、#if
)
#define XXX y
情景一:
#ifdef XXX
NSLog(@"程序_1");
#else
NSLog(@"程序_2");
#endif
//這表明如果標識符XXX已被#define命令定義過則對程序_1進行編譯地沮;否則對程序_2進行編譯嗜浮。
情景二:
#ifndef XXX
NSLog(@"程序_1");
#else
NSLog(@"程序_2");
#endif
//這表明如果標識符XXX沒有被#define命令定義過則對程序_1進行編譯;否則對程序_2進行編譯摩疑。
情景三:
#if 常量
NSLog(@"程序_1");
#else
NSLog(@"程序_2");
#endif
//這里表示危融,如果常量為真(非0,隨便什么數(shù)字雷袋,只要不是0)吉殃,就執(zhí)行程序_1,否則執(zhí)行程序_2楷怒。
情景四:
#ifdef DEBUG
NSLog(@"程序_1");
#else
NSLog(@"程序_2");
#endif
//如果是debug環(huán)境執(zhí)行程序_1蛋勺,否則執(zhí)行程序_2。
#if TARGET_IPHONE_SIMULATOR
NSLog(@"程序_1");
#else
NSLog(@"程序_2");
#endif
//如果是模擬器環(huán)境執(zhí)行程序_1率寡,否則執(zhí)行程序_2迫卢。
情景五:
#ifdef TEST
//程序調(diào)試運行時繞過此語句
NSLog(@"程序_1");
#else
NSLog(@"程序_2");
#endif
//避開硬件的限制。有時一些具體應(yīng)用環(huán)境的硬件不一樣冶共,但限于條件乾蛤,本地缺乏這種設(shè)備,于是繞過硬件捅僵,直接寫出預(yù)期結(jié)果
#ifdef和#if defined之間的區(qū)別
兩者的用法基本上一樣家卖,不過后者的應(yīng)用范圍更大,可以支持多個預(yù)編譯變量的檢查:
#if (!defined(_DEBUG) && defined(USE_MYLIB))
..........
#endif
更多相關(guān)信息請查看 Xcode 中 TargetConditionals.h 頭文件