日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

c25---条件编译

發(fā)布時(shí)間:2024/10/12 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c25---条件编译 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
// // main.c // 條件編譯(宏定義是簡(jiǎn)單的替換,要給參數(shù)和結(jié)果都加括號(hào)) #include <stdio.h>#define SCORE 90#define DEBUG 1 // 0是調(diào)試階段 1是發(fā)布階段 //printf和打印log是很消耗性能的。#if DEBUG == 0 // 調(diào)試階段 #define NJLog(format, ...) printf(format,## __VA_ARGS__) #else // 發(fā)布階段 #define NJLog(format, ...) #endif/*條件編譯和選則結(jié)構(gòu)if的共同點(diǎn)都可以對(duì)給定的條件進(jìn)行判斷, 添加滿足或者不滿足都可以執(zhí)行特定的代碼條件編譯和選則結(jié)構(gòu)if的共區(qū)別1.生命周期不同if 運(yùn)行時(shí)#if 編譯之前2.#if需要一個(gè)明確的結(jié)束符號(hào) #endif為什么需要一個(gè)明確的結(jié)束符號(hào)?如果省略掉#endif, 那么系統(tǒng)就不知道條件編譯的范圍, 那么會(huì)將滿足條件之后的第二個(gè)條件之后的所有內(nèi)容都清除(不參與編譯)3.if會(huì)將所有的代碼都編譯到二進(jìn)制中#if只會(huì)將滿足條件的部分一直到下一個(gè)條件的部分 編譯到二進(jìn)制中條件編譯的優(yōu)點(diǎn)1.縮小應(yīng)用程序的大小應(yīng)用場(chǎng)景:用于調(diào)試和發(fā)布階段進(jìn)行測(cè)試調(diào)試階段: 程序?qū)懘a的階段發(fā)布階段: 上傳到AppStore的階段*/ int main(int argc, const char * argv[]) {// 條件編譯和if非常非常像// if選擇結(jié)構(gòu)會(huì)對(duì)給定條件進(jìn)行判斷, 如果條件滿足就執(zhí)行if后面大括號(hào)中的內(nèi)容// 條件編譯也一樣, 會(huì)對(duì)給定的條件進(jìn)行判斷, 如果條件滿足就編譯條件后面的內(nèi)容int score = 90;if (score == 100) {printf("牛逼\n");printf("發(fā)朵大紅花\n");NJLog("牛逼\n");NJLog("發(fā)朵大紅花\n");}else if(score == 90){printf("牛X\n");printf("發(fā)朵小紅花\n");NJLog("牛X\n");NJLog("發(fā)朵小紅花\n");}else{printf("繼續(xù)加油\n");printf("別哭\n");NJLog("繼續(xù)加油\n");NJLog("別哭\n");}int score = 100;/*預(yù)處理指令什么時(shí)候執(zhí)行? 編譯之前。變量什么時(shí)候定義? 執(zhí)行了才會(huì)定義。編譯之后。注意點(diǎn): 條件編譯不能用來(lái)判斷變量, 因?yàn)椴辉谕粋€(gè)生命周期君生我未生, 我生君已老一般情況下, 條件編譯是和宏定義結(jié)合在一起使用的(都是預(yù)編譯指令,生命周期一樣) */ #if score == 100 #if SCORE == 100printf("牛逼\n");printf("發(fā)朵大紅花\n"); #elif SCORE == 90printf("牛X\n");printf("發(fā)朵小紅花\n"); #elseprintf("繼續(xù)加油\n");printf("別哭\n"); #endif // 作為結(jié)束符號(hào),打印"繼續(xù)加油,別哭"#if DEBUG == 0 //預(yù)編譯指令都以#開頭char *name = "lnj";char *pwd = "123"; #elsechar *name = NULL;char *pwd = NULL; #endif //結(jié)束符號(hào)printf("name = %s, pwd = %s\n", name, pwd);NJLog("name = %s, pwd = %s\n", name, pwd);return 0; } // // main.c // 條件編譯其它寫法 #include <stdio.h>#define SCORE 100 #define COUNT 50int main(int argc, const char * argv[]) {#ifdef SCORE // 判斷是否定義了后面的宏printf("score\n"); #elif COUNTprintf("count\n"); #elseprintf("OTHER\n"); #endif#ifndef SCORE // 是不是沒(méi)有定義名稱叫做SCORE的宏printf("no score\n"); #elseprintf("score\n"); #endif#if defined(SCORE) // 判斷是否定義了SCORE這個(gè)宏printf("score\n"); #elseprintf("no score\n"); #endif#if !defined(SCORE) // 判斷是否沒(méi)有定義SCORE這個(gè)宏printf("no score\n"); #elseprintf("score\n"); #endifreturn 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/yaowen/p/7403396.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的c25---条件编译的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。