Utiliser «vide» en C

Je ne comprends pas pourquoi nous devons passer à void dans les fonctions C:

 int f(void) { return 0; } 

contre

 int f() { return 0; } 

Quelle est la bonne chose à faire et pourquoi?

En C, int f() est une déclaration de style ancien. Il dit que f s’attend à un nombre et à un type d’arguments fixes mais non spécifiés. Par exemple, étant donné int f() { return 0; } int f() { return 0; } , le compilateur ne se plaindra pas de f(42) ou de f("hello, world") (bien que le comportement d’un tel appel ne soit pas défini).

int f(void) dit explicitement que f ne prend aucun argument.

(C ++ a des règles différentes; Stroustrup n’était pas aussi soucieux de la compatibilité ascendante avec l’ancien code C.)

C’est un vestige de C.

f(void) ne prend aucun argument, donc f(1) n’est pas valide.

f() signifie que les parameters ne sont pas spécifiés, donc f(1) est valide ici.

Le void dans ce cas signifie simplement “il n’y a pas de parameters”. Je ne suis pas sûr que votre deuxième cas comstack, mais de toute façon, je préférerais que le premier cas soit le plus clair possible. Bien sûr, lorsque vous appelez f , vous utilisez simplement les parenthèses vides:

 int x = f();