Compiler Warning (level 3) C4101

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at Compiler Warning (level 3) C4101.

identifier' : unreferenced local variable

The local variable is never used. This warning will occur in the obvious situation:

// C4101a.cpp  
// compile with: /W3  
int main() {  
int i;   // C4101  
}  

However, this warning will also occur when calling a static member function through an instance of the class:

// 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;  
}  

In this situation, the compiler uses information about si to access the static function, but the instance of the class is not needed to call the static function; hence the warning. To resolve this warning, you could:

  • Add a constructor, in which the compiler would use the instance of si in the call to func.

  • Remove the static keyword from the definition of func.

  • Call the static function explicitly: int y = S::func();.

Show: