Il motivo più probabile per cui tali variabili compaiono nella funzione è la rimozione di eventuali avvisi relativi agli argomenti non utilizzati.
Tuttavia, poiché è probabile che questo introduca ancora un altro avviso (poiché si sta probabilmente utilizzando un livello di avviso superiore al normale), l'autore fa un ulteriore passaggio per rimuovere anche quelli.
In C, la dichiarazione
42;
è in realtà valida, anche se non molto utile. Se si compila:
int main (void) {
42;
return 0;
}
non si lamenterà (normalmente). Tuttavia, se si compila che con gcc -Wall -pedantic
(per esempio), si otterrà qualcosa del tipo:
prog.c: In function `main':
prog.c:2: warning: statement with no effect
perché il compilatore, giustamente, pensa che tu sei andato pazzo.
Inserire un numero (void)
prima di qualcosa che genera un valore, ad esempio lo 42;
indicherà esplicitamente che non ti interessa il valore.
Ho visto questo usato su alcuni compilatori anali a ritenzione, che insistono sul fatto che, a causa di una funzione come printf
in realtà restituisce un valore, è necessario essere pazzi per ignorarlo, che porta a tali atrocità come:
(void)printf ("Hello, world.\n");
(void)strcpy (dest, src);
:-)
a titolo di esempio, se si compila:
void some_func (char *foo) {}
int main (void) { some_func (0); return 0; }
con gcc -Wall -W -pedantic
, si otterrà:
warning: unused parameter `foo'
Se si "usa" il parametro:
void some_func (char *foo) { foo; }
si otterrà
warning: statement with no effect
Tuttavia, se si utilizza il parametro e ignorare esplicitamente il risultato:
void some_func (char *foo) { (void)foo; }
non riceverai alcun avviso.
Anche se potevano essere lasciati come promemoria 'TODO'. – ruslik
Potrebbe non essere il caso di qualcosa lasciato TODO: questo potrebbe essere lo stato finale del codice. Ad esempio, questa funzione potrebbe essere una richiamata e quei parametri non vengono realmente utilizzati. –
"Assicurarsi" è un po 'troppo forte. Funzionerà per alcuni compilatori, ma a quanto pare non è universale: http://herbsutter.com/2009/10/18/mailbag-shutting-up-compiler-warnings/ – jamesdlin