Avviso del compilatore (livello 3 e livello 4) C4101

'identifier': variabile locale senza riferimenti

La variabile locale non viene mai usata. Questo avviso si verifica nella situazione ovvia:

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

Tuttavia, questo avviso si verifica anche quando si chiama una funzione membro tramite un'istanza static della classe :

// 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 questo caso, il compilatore usa informazioni su si per accedere static alla funzione, ma l'istanza della classe non è necessaria per chiamare la static funzione, quindi l'avviso. Per risolvere questo avviso, è possibile:

  • Aggiungere un costruttore in cui il compilatore userà l'istanza di si nella chiamata a func.

  • Rimuovere la static parola chiave dalla definizione di func.

  • Chiamare la static funzione in modo esplicito: int y = S::func();.