關于預編譯宏 #ifdef #else #endif
#ifdef ****flag
//代碼1
else
//代碼2
#endif
意思是 如果標識符****flag已被#define命令定義過,則對代碼1進行編譯,否則對代碼2進行編譯。
同時也有#ifndef,則與#ifdef剛好相反。
(1)OPTIMIZE :
用于release和debug的判斷,當選擇了OPTIMIZE 時,可以讓代碼在release時執行,在debug時不執行。
示例如下:
#ifndef __OPTIMIZE__
//這里執行的是debug模式下
else
//這里執行的是release模式下
#endif
(2)i386 與 x86_64 :用于模擬器環境和真機環境的判斷。滿足該條件的代碼只在模擬器下執行。示例代碼如下:
#if defined (__i386__) || defined (__x86_64__)
//模擬器下執行
#else
//真機下執行
#endif
(3)__IPHONE_OS_VERSION_MAX_ALLOWED :當前編譯的SDK版本,可以與__IPHONE_9_0等宏定義進行比較,進行不同版本下代碼的執行。示例如下:
if (__IPHONE_OS_VERSION_MAX_ALLOWED == __IPHONE_9_0)
{
//如果當前SDK版本為9.0是執行這里的代碼
}
else
{
//否則執行這里
}