mikrocontroller.net

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


Autor: Ingo L. (corrtexx)
Datum:

Bewertung
0 lesenswert
nicht 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:
// Clear Flags
volatile uint16_t dummy = 0;
dummy = USART_Recieve();     // Funktionert, gibt aber Warnung weil Variable ungenutzt
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?

Autor: Chris D. (myfairtux) (Moderator) Benutzerseite
Datum:

Bewertung
3 lesenswert
nicht 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
Autor: devzero (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Ja, ist zulaessig.

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

Autor: Vincent H. (vinci)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Leider ja.

Autor: A. S. (achs)
Datum:

Bewertung
1 lesenswert
nicht 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();
   ...
}

Autor: Ingo L. (corrtexx)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Vielen Dank

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Keiner N. (nichtgast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. S. (achs)
Datum:

Bewertung
1 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.