Forum: Mikrocontroller und Digitale Elektronik Besser int oder void bei Aufruf eines Unterprogramms?


von Frank Polle (Gast)


Lesenswert?

Hallo !
Was ist besser int oder void bei Aufruf des Unterprogramms "test" ?

int test();

void test();



Was ist Eure Meinung ?

Mfg Frank

von Unbekannter (Gast)


Lesenswert?

Gibt test() etwas zurück? Nein? Dann void!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn in der Funktion test() etwas schiefgehen kann, wenn ihr übergebene 
Parameter auf Richtigkeit überprüft werden sollen, dann ist die 
Verwendung eines Rückgabewertes sinnvoll, mit dem die Funktion mitteilen 
kann, daß etwas nicht in Ordnung ist.

Hierbei gibt es zwei Philosophien:

die "boolsche":

  Die Funktion gibt im Fehlerfalle 0 zurück, wenn sie ordnungsgemäß
  funktioniert, gibt sie einen von 0 unterschiedlichen Wert zurück.

die des Fehlercodes:

  Die Funktion gibt 0 zurück, wenn sie ordnungsgemäß funktioniert.
  Fehlerbedingungen werden durch unterschiedliche Werte signalisiert.

von Frank Polle (Gast)


Lesenswert?

Ok...mehr Hintergrunde gibt es also nicht?!

Gruss Frank

von Johannes M. (johnny-m)


Lesenswert?

Frank Polle wrote:
> Ok...mehr Hintergrunde gibt es also nicht?!
Was für Hintergründe soll es denn noch geben? Eine Funktion hat entweder 
einen Rückgabewert, der im Prinzip von jedem Datentyp sein kann (oder 
ein Zeiger auf einen Datentyp) oder sie hat keinen Rückgabewert und ist 
dementsprechend vom Typ void...

Wenn Deine Funktion "test" einen double zurückgibt, dann muss es auch
1
double test()
heißen. Wenn test einen Zeiger auf einen unsigned long zurückgibt, dann 
ist es
1
unsigned long* test()

von Miu (Gast)


Lesenswert?

int,double usw. ist langsamer bzw. braucht mehr Befehle,
weil der Compiler irgendwie den Rückgabewert realisieren muss..
Bei void muss er dies nicht.

von Jörg X. (Gast)


Lesenswert?

> int,double usw. ist langsamer bzw. braucht mehr Befehle,
Jetzt wirds doch interessant
Popcorn-holen-geh
scnr Jörg

von Miu (Gast)


Lesenswert?

??

von Jörg X. (Gast)


Lesenswert?

Die Geschwindigkeit ist doch kein Kriterium , welchen Rückgabetyp man 
verwendet. Entweder man braucht einen, dann nimmt man den passenden, 
oder man braucht eigentlich keinen, dann ergibt sich die Frage, ob 
Fehlercodes verwendet wird.
Man könnte rein theoretisch ;) ganz auf Rückgabewerte verzichten und mit 
Globalen Variablen oder call-by-reference arbeiten, nur: schneller ist 
das sicher auch nicht.

?! Jörg

von Miu (Gast)


Lesenswert?

Jo, dat is klar, meine Reply war ja auch nur ein zusätzlicher Hinweis.

von Jörg X. (Gast)


Lesenswert?

>  meine Reply war ja auch nur ein zusätzlicher Hinweis.
ok, sry
aber schade eigentlich ;-)

sry Jörg

von Miu (Gast)


Lesenswert?

Aber wenn mich jemand fragt:

"Besser int oder void bei Aufruf eines Unterprogramms?"

dann ist meine Antwort eben void aus oben genannten Gründen...

Wenn mir jemand die Wahl zwischen void und int gibt, dann bedeutet dies 
für mich, dass er keinen Rückgabewert benötigt... Stimme eurer Logik, 
dass eine Funktion, die nichts zurückliefert void sein sollte natürlich 
99% zu... :-)

von Johannes M. (johnny-m)


Lesenswert?

Miu wrote:
> Wenn mir jemand die Wahl zwischen void und int gibt, dann bedeutet dies
> für mich, dass er keinen Rückgabewert benötigt...
Oder, dass er das Prinzip des Rückgabewertes absolut nicht verstanden 
hat...

> Stimme eurer Logik,
> dass eine Funktion, die nichts zurückliefert void sein sollte natürlich
> 99% zu... :-)
Wieso nur zu 99%?

von Unbekannter (Gast)


Lesenswert?

Wer etwas nimmt, sollte auch etwas zurück geben.

Wenn also eine Funktion irgendwelche Parameter annimmt, sollte sie so 
nett sein und auch wieder etwas zurück geben.

Das was eine Funktion zurück gibt, sollte natürlich umso größer sein, je 
mehr Parameter sie nimmt.

Generell gilt auch: Geben ist seeliger als Nehmen.

Funktionen, die also gar keine Parameter nehmen und dennoch etwas 
zurückgeben, sind für das Gemeinwohl des kompletten Programms sehr 
günstig und sollten daher bevorzugt behandelt werden.

Funktionen die sich aus globalen Variablen-Eigentum bedienen, sind 
Schmarotzer und sollten eliminiert werden.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Auch wenns die Seele ist, heißt es nur seliger.
Sozusagen der "looser" (sic!) unter den religiösen Ausdrücken.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.