編譯器警告 (層級 3) C4101
更新:2007 年 11 月
錯誤訊息
'identifier' :未參考的區域變數
這個區域變數從未被使用。這個警告會發生在明顯情況下:
// C4101a.cpp
// compile with: /W3
int main() {
int i; // C4101
}
然而,這個警告也會發生在透過某類別 (Class) 執行個體,呼叫一個 static 成員函式 (Member Function) 時:
// C4101b.cpp
// compile with: /W3
struct S {
static int func()
{
return 1;
}
};
int main() {
S si; // C4101, si is never used
int y = si.func();
return y;
}
在這種情況下,編譯器會使用 si 的資訊,存取 static 函式,但並不需要該類別的執行個體,就能呼叫 static 函式;所以才會產生這個警告。若要解決這個警告,您可以:
加入一個建構函式 (Constructor),使編譯器在此建構函式中使用 si 的執行個體呼叫 func。
移除 func 定義中的 static 關鍵字。
明確呼叫 static 函式: int y = S::func();。