C/C++語言巨集定義##連線符和符#的使用

pan_jinquan發表於2016-11-10

C/C++語言巨集定義##連線符和符#的使用 

    【尊重原創,轉載請註明出處】http://blog.csdn.net/guyuealian/article/details/53113187
(一)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);
    可見#EXP將會被替換為【“divider == 0"】

相關文章