簡單把 Code 簡化一下,我們可以看到因為 structure Record 的成員變數 ID 與行數 7 的 define 相衝突,故在行數 14 的時候,會被前置處理器取代成 ptr->"id",故 VC 才會吐出這個錯誤,相較之下 GCC 的錯誤易懂多了,也算是學到一課了。
當然這是已經簡化 Code 後的結果,想像一下,如果 struct Record 與 define 分別位在不同的檔案,乍看之下,真的不容易發現問題,故在寫 C code 時,如果需要使用 define,最好是使用大寫(公司專案發生問題剛好是因為 define 用小寫,跟這邊的例子不一樣),比較不容易遇到這種鳥問題。
沒有留言:
張貼留言