PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rückgabewert einer Funktion verwerfen



Liquidator
04.05.2016, 14:55
Hallo liebe Gemeinde,

kurze (und möglicherweise blöde) Frage: kann man eigentlich auf eine intelligente Art den Rückgabewert einer Funktion verwerfen?
D.h. gar nicht erst in irgendeine Variable speichern.

Wenn die Funktion z.B. Statusmeldungen als Rückgabewert ausgibt, die man aber nicht benötigt...

Grüße,
Nik

witkatz
04.05.2016, 15:50
Wenn du den Rückgabewert einer Funktion nicht brauchst, dann rufst du foo(); einfach auf, als hätte sie keinen Rückgabewert. Das ist wohl die einfachste Art, den Rückgabewert zu verwerfen.
Vielleicht kannst du etwas Quellcode zeigen, was eigentlich das Problem ist?

Gruß
witkatz

- - - Aktualisiert - - -

Wolltest du wirklich so was einfaches wissen, oder habe ich die Frage nicht verstanden:wink: ?

Liquidator
04.05.2016, 16:02
Nein-nein, du hast alles richtig verstanden, witkatz, danke :)
Ich versuche mich gerade mit AtmelStudio anzufreunden. Während meine alten Compiler mir eine Warnung gezeigt haben, wenn ich eine Funktion mit Rückgabewert, ohne einen solchen zu sichern, ausgeführt habe - tut das AtmelStudio nicht. Da wollte ich dann vorsichtshalber nachfragen, ob das vllt. zu keinem guten Stil gehört^^

Wenn man mir noch eine Frage gestatten würde: Wie sieht es mit umgekehrt aus? Also eine void-Funktion, die aber trotzdem einen Rückgabewert ausgibt. Funktioniert dies? (außer Zeiger, Ändern einer globalen Variable)

witkatz
04.05.2016, 16:47
Wenn man mir noch eine Frage gestatten würde: OK, ausnahmnsweise ;)

Wie sieht es mit umgekehrt aus? Also eine void-Funktion, die aber trotzdem einen Rückgabewert ausgibt. Funktioniert dies? (außer Zeiger, Ändern einer globalen Variable)k.A. was Atmel Studio in dem Fall macht - probiere es aus und berichte.
Ich programmiere PICs mit XC8, der wirft in dem Fall den Fehler "error: (204) void function can't return a value". Wenn ein Compiler das nicht abfängt - ist schlimmstenfalls der Rückgabewert einer void Funktion undefiniert - unabhängig vom return Wert kommt also Müll zurück.

Nachtrag:
das gilt für explizit void deklarierte Funktionen. Wenn der Rückgabetyp in der Deklaration gänzlich fehlt, ist eine Funktion implizit vom Typ int.

Liquidator
04.05.2016, 17:07
OK, ausnahmnsweise ;)
Ui, einen echt guten Tag erwischt ;)

Gäbe es denn eine Möglichkeit, bei einer void-Funktion trotzdem einen Rückgabewert zu erhalten?
Dies ist jetzt nicht codebezogen, sondern eine hypothetische Aufgabenstellung.

witkatz
04.05.2016, 17:18
Gäbe es denn eine Möglichkeit, bei einer void-Funktion trotzdem einen Rückgabewert zu erhalten?Bei nativen C nur über call by reference, also Übergabe von Zeiger an die Funktion. Oder mit globalen Variablen - warum nicht. Ob es darüber hinaus in AtmelStudio noch andere Möglichkeiten gibt - k.A.

Liquidator
04.05.2016, 17:22
Ok, damit ist die "ausnahmsweise weitere Frage" vorbei, ich danke dir :)