天天看點

宏定義的用法

有五種用法,含有參數和不含參數,

行尾都不用加分号
  1. #define   <辨別符>  [<替換清單>]
    //類似于全局變量了
    //如果其他檔案沒有包含定義宏的檔案,則在宏定義的位置結束,如果有包含,則到包含的檔案結束
    #define LARGEST_NUM 1000
               
  2. #define  <辨別符>  ([參數清單]) ([替換清單])
    //注意,替換清單裡面必須加上括号,否則可能會導緻歧義
    //當然,替換清單也可以添加中括号,就看自己的用法了{}
    #define add (a,b) (a+b)
               
  3. #ifdef   #else  #ifndef  #endif 組合起來可以進行條件編譯
    //#ifdef以及#ifndef和#endif 是成對出現的
    #ifdef debug
    ...
    #else
    ...
    #endif
               
  4. 檔案包含,在多重引用的情況下,很容易搞混一個h檔案是否已經包含。如果不确定,可以使用如下語句進行包含
    #ifndef _HEADFILE_
    #define _HEADFILE_
    ...
    ...
    #endif
               
  5. 更多的替換 ##,#@,#

    ##

    //作用是連接配接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)
               

繼續閱讀