巨集定義的用法
阿新 • • 發佈:2018-11-09
有五種用法,含有引數和不含引數,行尾都不用加分號
-
#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)