關於宏定義

一、宏定義要加括號的緣由? 例如定義一個宏:函數

<!-- lang: cpp -->
#define div(x,y)  x*y

由於宏定義在預處理階段是內容嚴格的替換,若是調用div(a+b,y),替換後就成了a+b*y;不是咱們想要的結果(a+b)*y,因此宏的定義,特別是當作函數的宏定義,應該定義爲code

<!-- lang: cpp -->
#define div(x,y) (x)*(y)

二、宏定義中的# 、##字符串

#做用是把後面的宏參數轉化爲字符串,如di

<!-- lang: cpp -->
#define	 STR(s) #s
printf(STR(neo)); //輸出爲neo;

的做用表示天然鏈接

<!-- lang: cpp -->
    #define	 STR(s,s1)  #s###s1
    printf(STR(neo,hellow)); //輸出爲neohellow;
相關文章
相關標籤/搜索