帶參巨集定義的正確標準定義

2021-06-18 23:07:53 字數 570 閱讀 6888

#include 

#define add(x) x+x

//#define add(x) ((x)+(x)) 

//正確標準定義

int main()

int m = 1, n = 2, k = 3;

int sum = add(m+n)*k;

//int sum = m+n+m+n*k; 

//實際替換

//int sum = (add(m+n))*k; 

//預期目的

printf("sum = %d\n",sum);

return 0;

巨集定義 :

只是乙個簡單的替換過程,

不要自己想象中兩外在整體外新增括號,好像提高優先順序。

實參如果是表示式容易出問題  

#define s(r) r*r  

area=s(a+b);第一步換為area=r*r;第二步被換為area=a+b*a+b;  

正確的巨集定義是#define s(r) ((r)*(r))

**至微博

**至微博

札記 帶參巨集定義

1 帶參巨集定義中,巨集名和形參表之間不能有空格出現 2 巨集定義中不存在值傳遞,它只是乙個符號的替換過程 3 帶參巨集定義中,形參不分配記憶體空間,因此不必做型別定義 define max a,b a b a b void main void 4 在巨集定義中的形參是識別符號,而巨集呼叫中的實參可...

帶參巨集定義的思考

帶有引數的巨集定義 巨集定義是一種替換,所以返回的通常是帶有運算子表示式.不能返回語句.通常用的一些運算子 三目運算子 代替if語句 特殊建議 為了保證準確性,在 中放入變數 下面是一些巨集定義的例子 1,判斷字元是不是10進 值的 數字 define decchk c c 0 c 9 2,判斷字元...

C之帶參巨集定義

1.帶參巨集定義跟前面文章有所區別,不是簡單的數值或者字串替換,是要進行引數替換。2.本人理解,帶參巨集是很方便的,一些固定輸入和輸出咱們可以選擇帶參巨集,類似工程中多出要計算兩數相乘,這種情況我們就可以使用帶參巨集。define s a,b a b qdebug 2,3 6 define pi 3...