下面是引用 i-c0112 於 2011-01-21 01:39 發表的 :
你不是要我判斷會變化的數嗎...看來我理解力很差
算了…那不重要…反正剛才自己不小心推翻自己的說法了…
目前我是知道為何會編譯錯誤了…原因其實是…邏輯錯誤…
如果你改成:
複製程式
#define DEBUG 1
#if DEBUG >= 2
#elseif DEBUG >= 1
#endif
這樣編譯就沒問題了…至於為何你原本的寫法會錯誤…?
原因是:
複製程式
//當 DEBUG >= 1 時早就包括 DEBUG >= 2 的內容了…
//所以編譯時才會出現錯誤「extra characters on line」…因為以邏輯上來說這行的確是多餘的…
#if DEBUG >= 1
#elseif DEBUG >= 2
#endif
//當 DEBUG >= 2 時並不包括 DEBUG >= 1 的內容了…
//因為有唯一的例外:DEBUG == 1 ,所以邏輯上沒錯誤…
#if DEBUG >= 2
#elseif DEBUG >= 1
#endif
後來又發現上面說法又被推翻了…好像不是邏輯的問題…
如果將原本的寫法改成:
複製程式
#define DEBUG 1
#if DEBUG >= 2
#elseif DEBUG == 1
#endif
這樣也不會編譯錯誤…目前又只能猜測…
「#if」裡比較的內容要大於「#elseif」裡比較的內容?