Forum: Compiler & IDEs Funktionsrückgabe ins Leere erlaubt?


von Ingo L. (corrtexx)


Lesenswert?

Hallo,

ich habe eine Funktion, die mir durch Lesen des USART Datenregisters 
auch gleich alle Flags löscht. Nun soll diese Funktion normalerweise ja 
den Inhalt des Registers zurück geben. Aber wenn ich nur die Flags 
löschen will, benötige ich Dummy:
1
// Clear Flags
2
volatile uint16_t dummy = 0;
3
dummy = USART_Recieve();     // Funktionert, gibt aber Warnung weil Variable ungenutzt
4
USART_Recieve(); // Lösung, keine Variable, Rückgabe ins "Leere". Funktioniert, aber auch zulässig?

Is das Rückgeben eines Wertes ins Leere zulässig?

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Wenn es C/C++ ist:

Ja, das ist kein Problem. Der Rückgabewert wird dann einfach verworfen.

Andere hier wissen sicherlich, wo das im C-Standard steht :-)

: Bearbeitet durch Moderator
von devzero (Gast)


Lesenswert?

Ja, ist zulaessig.

printf() z.B. hat auch einen Rueckgabewert, den Du wahrscheinlich noch 
nie ausgewertet hast, oder? :)

von Vincent H. (vinci)


Lesenswert?

Leider ja.

von A. S. (Gast)


Lesenswert?

Wenn Du Lint oder anderen Warnmeldern mitteilen willst, dass es so 
gewollt ist, dann schreibe (void) davor:

[c]
extern volatile int _reg;
volatile int readxy(void);
void xyz(void)
{
   ...
   (void) _reg;
   ...
   (void) readxy();
   ...
}

von Ingo L. (corrtexx)


Lesenswert?

Vielen Dank

von Wilhelm M. (wimalopaan)


Lesenswert?


von Keiner N. (nichtgast)


Lesenswert?

Mach aber eine Funktion die ClearUsartFlags() oder ähnlich heisst. Dort 
drin kannst du ja dein Receive aufrufen.
Fann wird der aufrufenden Stelle klar, was du erreichen willst.

von A. S. (Gast)


Lesenswert?

Keiner N. schrieb:
> Mach aber eine Funktion die ClearUsartFlags() oder ähnlich heisst. Dort
> drin kannst du ja dein Receive aufrufen.
> Fann wird der aufrufenden Stelle klar, was du erreichen willst.

Ich halte das nur im akademischen Kontext für sinnvoll oder wenn für 
Unit-Tests oder Metriken eh jede Funktion nur 3 Zeilen haben soll. .

Eine Funktion kostet mehrer Zeilen Sourcecode, belegt einen Namen (in 
vielen Browsern) und verteilt zusammenhängende Aktionen.

Ja, wenn es von vielen Stellen ist, oder ein Framework, oder andere 
Schritte zu tun sind, aber nicht um maximal 3 Worte Kommentar (nicht*) 
zu sparen.

(*)In ClearUsartFlags brauchst Du den Kommentar ja trotzdem, sonder 
optimiert es dort genauso einer weg.

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.