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就變成局部變量,下面再次使用當然是未聲明了。 額,改代碼的時候一定要小心啊,不然就掉坑了。
其實,掉過很過坑之后,也可以得出一個結論: 只要是報錯的,肯定是你自己問題,明明配置好了庫,依然找不到,路徑絕對有問題; 明明聲明了函數,卻找不到函數定義,函數聲明本身沒問題,肯定函數聲明的上下文產生了問題。
新聞熱點
疑難解答