Compartir vía


Advertencia del compilador (niveles 3 y 4) C4101

'identifier': variable local sin referencia

Nunca se usa la variable local. Esta advertencia se produce en la situación obvia:

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

Sin embargo, esta advertencia también se produce al llamar a una función miembro static a través de una instancia de la clase:

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

En esta situación, el compilador usa información sobre si para acceder a la función static, pero la instancia de la clase no es necesaria para llamar a la función static y, por lo tanto, la advertencia. Para resolver esta advertencia, podría hacer lo siguiente:

  • Agregar un constructor en el que el compilador usaría la instancia de si en la llamada a func.

  • Quitar la palabra clave static de la definición de func.

  • Llamar a la función static explícitamente: int y = S::func();.