C中的define 特殊用法

2021-12-29 20:41:19 字數 966 閱讀 3397

今天,我的乙個同學告訴我了乙個define的另一用法,之前我是真心不知啊!非常感謝他願意告訴我,他願意與我分享,我又怎木能」吃獨食「呢!哈哈!所以我就想把他記錄下來,分享給各位看客,同時也使自己不會忘記。好了,開始了!!

首先來看乙個例子:

這個很平常,大家都會用,但如果是下面這樣使用,可以嗎?

好,讓我們來編譯一下,看是什麼情況。

再看一下,巨集展開後是怎木樣的! (巨集展開:$: gcc -e -p tt.c > file, 過後開啟file檔案就會看見)

編譯時 發現錯誤,重定義了 i 變數。這是為什麼?

因為定義的巨集是在編譯時就在呼叫處展開了,當兩個巨集定義fun()在同一作用域中呼叫時,就會發生變數重定義了。

那麼有什麼方法可以使這種呼叫正確呢?請看下面:

經編譯,沒法現錯誤,為什麼?我們再來看看展開後的巨集:

沒發生錯誤,是因為在這裡產生了兩個不同的變數,i1,i2,。

define 特殊用法

define conn x,y x y define tochar x x define tostring x x x y表示什麼?表示x連線y,舉例說 int n conn 123,456 結果就是n 123456 char str conn asdf adf 結果就是 str asdfadf 再...

define特殊用法

define conn x,y x y define tochar x x define tostring x x x y表示什麼?表示x連線y,舉例說 int n conn 123,456 結果就是n 123456 char str conn asdf adf 結果就是 str asdfadf 怎...

define的幾點特殊用法

define conn x,y x y define tochar x x define tostring x x x y表示什麼?表示x連線y,舉例說 int n conn 123,456 結果就是n 123456 char str conn asdf adf 結果就是 str asdfadf 再...