1. 程式人生 > >已經宣告過變數,依然報 C2065:未宣告的識別符號錯誤 解決辦法

已經宣告過變數,依然報 C2065:未宣告的識別符號錯誤 解決辦法

  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就變成區域性變數,下面再次使用當然是未聲明瞭。 額,改程式碼的時候一定要小心啊,不然就掉坑了。

   其實,掉過很過坑之後,也可以得出一個結論: 只要是報錯的,肯定是你自己問題,明明配置好了庫,依然找不到,路徑絕對有問題; 明明聲明瞭函式,卻找不到函式定義,函式宣告本身沒問題,肯定函式宣告的上下文產生了問題。