天天看點

C/C++語言宏定義##連接配接符和符#的使用

C/C++語言宏定義##連接配接符和符#的使用 

(一)C/C++語言宏定義##連接配接符和符#的使用

   (1) ## 連接配接符:在帶參數的宏定義中,

 用來将兩個Token連接配接為一個Token

,進而形成一個新的子串。

注意這裡連接配接的對象是Token就行,而不一定是宏的變量。

    例子:

#define XNAME(n) x ## n      

    當出現int XNAME(1) = 14;時,會被替換為:

int x1=14;      

     (2)#符:是将其後面的宏參數進行字元串化操作(Stringfication),即把宏參數變為一個字元串,簡單說就是在對它所引用的宏變量 通過替換後在其左右各加上一個雙引号。#符,也就是把傳遞過來的參數當成字元串進行替代。

    例子:

#define WARN_IF(EXP) do{ if (EXP) fprintf(stderr, "Warning: " #EXP "/n"); } while(0)      

當出現WARN_IF (divider == 0);時,相當于如下替換:

do {
  if (divider == 0)
    fprintf(stderr, "Warning" "divider == 0" "/n");
} while(0);