#define用法集錦

#define用法集錦

ID:47055097

大?。?6.50 KB

頁數(shù):13頁

時間:2019-07-10

#define用法集錦_第1頁
#define用法集錦_第2頁
#define用法集錦_第3頁
#define用法集錦_第4頁
#define用法集錦_第5頁
資源描述:

《#define用法集錦》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、#define用法集錦Definition:The#defineDirective  Youcanusethe#definedirectivetogiveameaningfulnametoaconstantinyourprogram.Thetwoformsofthesyntaxare:  Syntax  #defineidentifiertoken-stringopt  #defineidentifier[(identifieropt,...,identifieropt)]token-stringopt?Usage:1.??????簡單的define定義

2、#defineMAXTIME1000一個簡單的MAXTIME就定義好了,它代表1000,如果在程序里面寫if(i(y)?(x):(y);這個定義就將返回兩個數(shù)中較大的那個,看到了嗎?

3、因為這個“函數(shù)”沒有類型檢查,就好像一個函數(shù)模板似的,當然,它絕對沒有模板那么安全就是了??梢宰鳛橐粋€簡單的模板來使用而已。但是這樣做的話存在隱患,例子如下:#defineAdd(a,b)a+b;在一般使用的時候是沒有問題的,但是如果遇到如:c*Add(a,b)*d的時候就會出現(xiàn)問題,代數(shù)式的本意是a+b然后去和c,d相乘,但是因為使用了define(它只是一個簡單的替換),所以式子實際上變成了c*a+b*d另外舉一個例子:#definepin(int*);pina,b;本意是a和b都是int型指針,但是實際上變成int*a,b;a是int型指針,而b是

4、int型變量。這是應該使用typedef來代替define,這樣a和b就都是int型指針了。所以我們在定義的時候,養(yǎng)成一個良好的習慣,建議所有的層次都要加括號。3.宏的單行定義(少見用法)#defineA(x)T_##x#defineB(x)#@x#defineC(x)#x我們假設:x=1,則有:A(1)------〉T_1B(1)------〉'1'C(1)------〉"1"(這里參考了hustli的文章)3.define的多行定義define可以替代多行的代碼,例如MFC中的宏定義(非常的經(jīng)典,雖然讓人看了惡心)#defineMACRO(arg1,

5、arg2)do{/*declarations*/stmt1;stmt2;/*...*/}while(0)/*(notrailing;)*/關(guān)鍵是要在每一個換行的時候加上一個""4.在大規(guī)模的開發(fā)過程中,特別是跨平臺和系統(tǒng)的軟件里,define最重要的功能是條件編譯。就是:#ifdefWINDOWS............#endif#ifdefLINUX............#endif可以在編譯的時候通過#define設置編譯環(huán)境5.如何定義宏、取消宏//定義宏#define[MacroName][MacroValue]//取消宏#und

6、ef[MacroName]//普通宏#definePI(3.1415926)帶參數(shù)的宏#definemax(a,b)((a)>(b)?(a),(b))關(guān)鍵是十分容易產(chǎn)生錯誤,包括機器和人理解上的差異等等。6.條件編譯#ifdefXXX…(#else)…#endif例如#ifdefDV22_AUX_INPUT#defineAUX_MODE3#else#defineAUY_MODE3#endif#ifndefXXX…(#else)…#endif7.頭文件(.h)可以被頭文件或C文件包含;重復包含(重復定義)由于頭文件包含可以嵌套,那么C文件就有可能包含多次同

7、一個頭文件,就可能出現(xiàn)重復定義的問題的。通過條件編譯開關(guān)來避免重復包含(重復定義)例如#ifndef__headerfileXXX__#define__headerfileXXX__…//文件內(nèi)容…#endif?Instances:1、防止一個頭文件被重復包含#ifndefCOMDEF_H#defineCOMDEF_H?//頭文件內(nèi)容#endif2、重新定義一些類型,防止由于各種平臺和編譯器的不同,而產(chǎn)生的類型字節(jié)數(shù)差異,方便移植。typedef??unsignedchar??????boolean;????/*Booleanvaluetype.*/ty

8、pedef??unsignedlongint??uint32;??????/*U

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。