Funktionsrückgabe ins Leere erlaubt?

OP #5640970
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?
Gast #5640975
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();
   ...
}
Gast #5642073
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren