/*
預(yù)處理指令?:
????宏定義?:?就是將代碼中的宏名進(jìn)行簡(jiǎn)單的替代,不進(jìn)行任何運(yùn)算;
????????不帶參數(shù)的宏定義?:
????????????基本格式?:?
????????????????#idefine?宏名?宏值????//程序預(yù)處理時(shí),會(huì)將代碼中,所有的宏名都替代為宏值;
????????????????????宏名書(shū)寫(xiě)規(guī)范?:?全部大寫(xiě),單詞之間以"_"分隔;
????????????????????注?:?切記紅定義中,不要以";"結(jié)尾,原因在宏定義中默認(rèn)宏名之后所有的內(nèi)容均為宏值,因此,一旦以";"結(jié)尾,也會(huì)將其當(dāng)做宏值處理;
????????帶參數(shù)的宏定義?:
????????????基本格式?:
????????????????#define?宏名(形參)?宏值????//預(yù)處理時(shí),會(huì)將接受的實(shí)參替代宏值中的形參,而后再將代碼中所有的宏名以宏值替代;
????????????????????形參?:?此處無(wú)需寫(xiě)形參的數(shù)據(jù)類(lèi)型,因此沒(méi)有任何意義;
????????????????????應(yīng)用?:?此時(shí)的宏值多為一行簡(jiǎn)單代碼,而某一單一值;
????????注?:?如果在代碼中,宏名被包裹在""中,則預(yù)處理時(shí),宏名不會(huì)被宏值替代;
????????宏的作用域?:?自定義位置起至文件末尾;
????????提前結(jié)束宏的作用域?:?#undef?宏名;
????????宏定義的應(yīng)用場(chǎng)景?:?常用于記錄一些頻繁使用且繁瑣的數(shù)據(jù);
????條件編譯?:?當(dāng)條件滿足時(shí),就將對(duì)應(yīng)的代碼塊保留在程序中執(zhí)行;
????????基本格式?:
????????????#if?condition?
????????????????代碼塊;
????????????#elif?condition
????????????????代碼塊;
????????????#else
????????????????代碼塊;
????????????#endif????//當(dāng)某一個(gè)條件滿足時(shí),只保留該條件對(duì)應(yīng)的代碼塊,其他至endif之間的代碼塊全部刪除;
????????其他寫(xiě)法?:
??????????第一種?:
????????????#ifdef?宏名
????????????????代碼塊;
????????????#else
????????????????代碼塊;
????????????#endif
??????????第二種?:
??????????????#ifndef?宏名
??????????????????代碼塊;
??????????????#else
??????????????????代碼塊;
??????????????#endif
????????條件編譯的優(yōu)點(diǎn)?:
????????????1,節(jié)省內(nèi)存,因?yàn)椴粷M足條件的代碼塊均會(huì)被刪除;
????????????2,常用于調(diào)試過(guò)程,如當(dāng)我們?yōu)閝q寫(xiě)一個(gè)用戶(hù)分組時(shí),需要頻繁登陸qq,以查看效果.因此,在調(diào)試過(guò)程中,我們就可以把自己的用戶(hù)名,密碼寫(xiě)入條件編譯中的宏定義中,\
??????????????以節(jié)省我們頻繁登陸輸入用戶(hù)名,密碼浪費(fèi)的時(shí)間,而在上傳應(yīng)用后,只需修改一下條件,即跳轉(zhuǎn)用戶(hù)登陸;
?????文件包含?:?也即將其他文件復(fù)制替代本文件中文件包含那一行代碼;
?????????#include?<>????//會(huì)先在編譯環(huán)境下查找,找不到,再到系統(tǒng)環(huán)境下查找指定文件;
?????????#include?""????//會(huì)現(xiàn)在當(dāng)前文件目錄下查找指定文件,找不到,再編譯環(huán)境下查找,找不到,再到系統(tǒng)環(huán)境下查找指定文件;
?????注?:?重復(fù)導(dǎo)入頭文件,會(huì)降低程序執(zhí)行效率,因此可利用條件編譯,寫(xiě)一個(gè)頭文件衛(wèi)士,一旦已經(jīng)導(dǎo)入了該頭文件,就不在重復(fù)導(dǎo)入;
*/
文章題目:C語(yǔ)言之預(yù)處理指令
本文來(lái)源:
http://weahome.cn/article/jesiog.html