in c: func (void) vs. func () [duplicato]
Domanda
Questa domanda ha già una risposta qui:
Quando una funzione C non accetta alcun argomento, ha a che essere dichiarate / definito con un parametro di "vuoto" dal regime linguistico? PC-Lint sembra avere problemi quando non c'è niente affatto nell'argomento-list, e mi chiedevo se è qualcosa che nella sintassi del linguaggio che io non so.
Modifica Ho appena trovato un duplicato (? Back-dupe è venuto prima) domanda, C argomenti vuoti , che ha più risposte e spiegazioni.
Soluzione
vuoto significa che la funzione non accetta parametri. Ad esempio,
int init (void)
{
return 1;
}
Questa non è la stessa come la definizione di
int init ()
{
return 1;
}
, perché nel secondo caso il compilatore non verificare se la funzione è davvero chiamato senza argomenti a tutti; invece, una chiamata di funzione con un numero arbitrario di argomenti saranno accettate senza eventuali avvisi (questo è implementata solo per la compatibilità con la sintassi definizione della funzione vecchio stile, pre-ANSI).
Altri suggerimenti
IIRC func (void) in C sarà dichiarare una funzione che accetta parametri che func () dichiara una funzione che prendere qualsiasi numero di parametri. Credo che quest'ultimo è un artefatto proveniente dal pre-ANSI C.
Wikipedia qui, la dichiarazione di func () fa in pratica dichiarare la funzione "senza informazioni sui parametri".