今天,我的乙個同學告訴我了乙個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 再...