有五種用法,含有參數和不含參數,
行尾都不用加分号- #define <辨別符> [<替換清單>]
//類似于全局變量了 //如果其他檔案沒有包含定義宏的檔案,則在宏定義的位置結束,如果有包含,則到包含的檔案結束 #define LARGEST_NUM 1000
- #define <辨別符> ([參數清單]) ([替換清單])
//注意,替換清單裡面必須加上括号,否則可能會導緻歧義 //當然,替換清單也可以添加中括号,就看自己的用法了{} #define add (a,b) (a+b)
- #ifdef #else #ifndef #endif 組合起來可以進行條件編譯
//#ifdef以及#ifndef和#endif 是成對出現的 #ifdef debug ... #else ... #endif
- 檔案包含,在多重引用的情況下,很容易搞混一個h檔案是否已經包含。如果不确定,可以使用如下語句進行包含
#ifndef _HEADFILE_ #define _HEADFILE_ ... ... #endif
-
更多的替換 ##,#@,#
##
#@//作用是連接配接x和y #define Conn(x,y) x##y ... int a=Conn(123,456); //那麼a=123456 string s=Conn(123,456); //那麼s="123456"
#//作用是把x轉換為char并傳回 #define ToChar (x) #@x ... //x不能超過4個字元,否則就會報超長錯誤 char a = ToChar(1)
//作用是把x轉換為string,并傳回, #define ToString (x) #x ... //傳回的結果是"123456" string s= ToString(123456)