程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C中的define 特殊用法

C中的define 特殊用法

編輯:關於C語言

\


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


首先來看一個例子:

\

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

\

好,讓我們來編譯一下,看是什麼情況。<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICA8aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140319/20140319092240332.jpg" alt="\">

再看一下,宏展開後是怎木樣的! (宏展開:$: gcc -E -P tt.c > file, 過後打開file文件就會看見)

\

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

因為定義的宏是在編譯時就在調用處展開了,當兩個宏定義FUN()在同一作用域中調用時,就會發生變量重定義了。

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

\

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

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





  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved