2022年3月21日 星期一

error C2059: syntax error : 'string'

今天幫忙看一個 compiler error,第一個錯誤如標題所述,但因為 Visual C++ 還多顯示了其他很奇怪的錯誤,故一時還真看不出錯誤在哪,還好在半小時之內還是順利的解決了。

簡單把 Code 簡化一下,我們可以看到因為 structure Record 的成員變數 ID行數 7 的 define 相衝突,故在行數 14 的時候,會被前置處理器取代成 ptr->"id",故 VC 才會吐出這個錯誤,相較之下 GCC 的錯誤易懂多了,也算是學到一課了。

當然這是已經簡化 Code 後的結果,想像一下,如果 struct Record 與 define 分別位在不同的檔案,乍看之下,真的不容易發現問題,故在寫 C code 時,如果需要使用 define,最好是使用大寫(公司專案發生問題剛好是因為 define 用小寫,跟這邊的例子不一樣),比較不容易遇到這種鳥問題。

沒有留言:

張貼留言