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);