一、概念
/*
條件編譯 和 選擇結(jié)構(gòu)if的共同點
都可以對給定的條件進(jìn)行浦判斷, 添加滿足或者不滿足都可以執(zhí)行特定的控件
條件編譯 和選擇結(jié)構(gòu)的if的區(qū)別
1.聲明周期不同
if 運行時
#if 需要一個明確的結(jié)束符號 #endfif
2.#if需要一個明確的結(jié)束符 #endif
為什么需要明確一個明確的結(jié)束符號?
如果省略去掉 #endif, 知道系統(tǒng)塊不知道條件編譯的范圍,那么會將滿足條件之后的第二條件之后的 所有內(nèi)容都清除
3.if會將所有的代碼 都編譯到二進(jìn)制中
#if 只會將滿足條件的部分 一直到下一個條件的編譯到二進(jìn)制中
條件編譯的優(yōu)點
1.邦小程序的大小
應(yīng)用場景
用于調(diào)試 和 發(fā)布階段進(jìn)行測試
調(diào)式階段 : 程序?qū)懙拇a
發(fā)布階段 : 上傳App Stores的階段
*/
二钓觉、代碼
#include <stdio.h>
#define SCORE 90
#define DEBUG 0 // 0是調(diào)試階段, 1是發(fā)布階段
#if DEBUG == 0
// 調(diào)試階段
#define YHLog(format, ...) printf(format,##__VA_ARGS__)
#else
// 發(fā)布階段
#define YHLog(format, ...)
#endif
int main()
{
// 條件編譯 和 if非常非常像
// if選擇結(jié)構(gòu) 會對給定條件進(jìn)行判斷, 如果條件滿足 就執(zhí)行if后面大括號中的內(nèi)容
// 條件編譯 也一樣, 也會對給定的條件 進(jìn)行判斷, 如果條件滿足 就編譯條件后面的內(nèi)容
int score = 90;
if (score == 100) {
YHLog("NB---\n");
YHLog("發(fā)朵大紅包\n");
}
else if (score == 90) {
YHLog("NB---\n");
YHLog("發(fā)朵小紅包\n");
}
else
{
YHLog("繼續(xù)加油\n");
YHLog("別哭\n");
}
// 預(yù)處理指令什么時候執(zhí)行, 編譯之前
// 變量什么時候定義? 執(zhí)行了才會定義
// 注意點 : 條件編譯 不能用來判斷變量, 因為不再同一個生命周期
// 君生我未生,我生君已老
// 一般情況下,條件編譯是和 宏定義結(jié)合在一起使用的
#if SCORE == 100
printf("發(fā)朵大紅包\n");
#elif SCORE == 90
printf("NB\n");
printf("發(fā)朵小紅包\n");
#else
printf("繼續(xù)加油a\n");
printf("別哭\n");
#endif // 作為結(jié)束符號
#if DEBUG == 0
char *name = "lyh";
char *pwd = "123";
#else
char *name = NULL;
char *pwd = NULL;
#endif
YHLog("name = %s, pwd = %s\n",name,pwd);
return 0;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者