Wann kann "void()" verwendet werden und was sind die Vorteile, dies zu tun
Habe ich angefangen zu lernen, die Sprache C vor kurzem, und haben darauf hingewiesen, die Funktion "void()", allerdings würde ich gerne wissen, was es tut, und es ist am besten Punkte der Anwendung, vielleicht auch eine alternative für ungültig zu erklären, die potenziell produktiver. Danke.
- Es gibt keine Funktion, die aufgerufen wird
void
. Können Sie uns sagen, was Sie gesehen haben, genau mit einem Beispiel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Funktion namens
void
, aber eine Funktion kann erklärt werden mit einem Rückgabetypvoid
. Dies bedeutet, dass die Funktion keinen Wert zurückgibt.Update
void
können auch verwendet werden, um anzuzeigen, dass der compiler, dass die Funktion keine Argumente. Zum Beispiel,f(void)
bedeutet, dass die Funktion nimmt keine Argumente an, währendf()
bedeutet, dass keine Typ-Prüfung erfolgt auf die Argumente.void
in C drei verwendet:Zu erklären, dass eine Funktion keinen Wert zurück:
Zu erklären, dass eine Funktion keine Parameter akzeptieren:
(GEFAHR ROBINSON!) Deklarieren Sie eine "universal pointer", der übergeben werden, um z.B. als ein magic cookie, oder übergeben, um jemand in einem callback, dort zu wirken, zurück zu seiner ursprünglichen Art.
register_callback
ist aufgerufen mit einem Zeiger auf eine void-Funktion, die erwartet als parameter einen Zeiger, der vermutlich etwas bedeutet es. Bei einigen (nicht näher bezeichneten) Zeitpunkt in der Zukunft, wird diese Funktion aufgerufen werden, mit bar als parameter. Sie sehen, diese Art von Sache, die in bestimmten Arten von eingebetteten Führungskräfte und wiederverwendbare Geräte-Treiber, obwohl nicht so viel überall.void*
, nichtvoid
. Sie sind 2 sehr sehr unterschiedliche Dinge.volatile
qualifier und Sie wollen beruhigen den compiler. In meinen Makros habe ich auch etwas, was oft sehr praktisch, einP99_NOP
erweitert, um(void)0
. E. g, wenn Sie möchten, deklarieren Sie ein makro mit mehreren Anweisungen, einschließlich einerbreak
Sie tun könnenif (1) { .... } else P99_NOP
anstelle der Häufig verwendetendo { ... } while(0)
.void
erwähnt, in der Norm als solche. Ein seit Sie fordern eine generelle Aussage zu C, dieser fehlte. Das ist es.Wenn
void
als Funktionsargumente ist sinnvoll ?In der obigen snippet, obwohl
foo()
Prototyp hat keine Argumente, es ist immer noch gültig, pass etwas auf ihn. Also, um zu vermeiden, dass solche Dinge passieren -Nun ist es garantiert, dass man etwas zu
foo()
erzeugen würde, der compiler-Fehler.void
als Funktion argument ist hilfreich. So veröffentlicht das snippet.foo(5)
ist NICHT GÜLTIG, dh es ruft UB. Um gültig zu sein, müsste es sein, ohne Parameter aufgerufen, in übereinstimmung mit der definition einer Funktion (nicht Erklärung). Verwendet der compiler die Deklaration, um zu wissen, über zurück geben (und Argumente prüfen): in dem oben genannten Programm keine überprüfung der Argumente erfolgt aber die Argumente müssen passen die definition einer Funktion sowieso.<stdlib.h>
und<stdio.h>
(beachten Sie, dass Sie nicht alles verwenden, was erklärt, in<stdlib.h>
im Programm).Ich glaube nicht, dass es eine void () - Funktion.
Jedoch die
void
- Schlüsselwort verwendet, um anzugeben, dass eine Funktion nichts zurückgibt, z.B.: