已經宣告過變數,依然報 C2065:未宣告的識別符號錯誤 解決辦法
阿新 • • 發佈:2018-12-31
vs,c++編譯程式碼的時候,遇到很奇怪的問題,明明在前面,已經宣告過變數,編譯的時候仍然報 未宣告的識別符號錯誤,定位錯誤地方,在賦值之前,明明定義過變量了啊,非常疑惑,下面貼上程式碼,火眼金睛的你能不能找到原因:
if (fr < 0 || fc < 0 || fc + 1 >= mat.cols() || fr + 1 >= mat.rows())
//return Color::NO;
Color ret = Color::BLACK; //這裡定義過了
r -= fr, c -= fc; // 只保留小數
const float* p = mat.ptr(fr, fc);
if (*p < 0) return Color::NO; // return Color::NO if any one of the neighbor is Colo::NO
//ret = Color::BLACK;
ret += Color(p) * ((1 - r) * (1 - c)); //一直報這裡ret未宣告的錯誤
不仔細看,好像沒什麼問題,其實問題就出在第二句,if 語句下面那句話不知道什麼時候註釋了,所以 定義 ret的那句程式碼變成了 if 語句的內容,這樣 ret就變成區域性變數,下面再次使用當然是未聲明瞭。 額,改程式碼的時候一定要小心啊,不然就掉坑了。
其實,掉過很過坑之後,也可以得出一個結論: 只要是報錯的,肯定是你自己問題,明明配置好了庫,依然找不到,路徑絕對有問題; 明明聲明瞭函式,卻找不到函式定義,函式宣告本身沒問題,肯定函式宣告的上下文產生了問題。