Forum: Mikrocontroller und Digitale Elektronik C-Frage zur Ermittlung Takt Cortex-M3


von Oha! (Gast)


Lesenswert?

Hallo,

als Anfänger habe ich mir nun schon etwas C angetan und mache 
Trockenübungen mit der LPCXpresso-IDE (Super teil).
Ich hüpfe mit F3 so durch die ganzen LPCOpen-Deklarationen und verstehe 
folgendes nicht:
1
/* Return main clock rate */
2
uint32_t Chip_Clock_GetMainClockRate(void)
3
{
4
  uint32_t clkRate;
5
6
  if (Chip_Clock_GetMain_B_ClockSource() == SYSCTL_MAIN_B_CLKSRC_MAINCLKSELA) {
7
    /* Return main A clock rate */
8
    clkRate = Chip_Clock_GetMain_A_ClockRate();
9
  }
10
  else {
11
    /* Return main B clock rate */
12
    clkRate = Chip_Clock_GetMain_B_ClockRate();
13
  }
14
15
  return clkRate;
16
}

Nach dieser Funktion ist die Variable clkRate doch nicht mehr existent?
Warum wird sie dann angelegt, ihr ein Wert zugewiesen und dieser am Ende 
zurückgegeben? Es wäre doch kürzer und schneller einfach zu schreiben
return Chip_Clock_GetMain_A_ClockRate();
else
return Chip_Clock_GetMain_B_ClockRate();
Und sollten durch Aufruf von z.B. Chip_Clock_GetMain_A_ClockRate(); 
irgendwelche anderen Effekte erreicht werden, müßte es doch mit einem 
direkten return auch funktionieren?

von B. S. (bestucki)


Lesenswert?

Ist eine Stilfrage. Manche mögen keine mehrfachen returns.

Die Variable clkRate existiert wahrscheinlich gar nie, der Compiler wird 
das optimieren.

von chris (Gast)


Lesenswert?

Oha! schrieb:
> Es wäre doch kürzer und schneller einfach zu schreiben

Der Compiler optimiert die Variable sowieso weg.
Aber es ist wesentlich übersichtlicher, wenn es nur ein return am Ende 
der Funktion gibt, anstatt unzählige returns über die ganze Funktion zu 
verteilen.
--> Eine Frage des Programmierstils und der Übersichtlichkeit.

von Philipp (Gast)


Lesenswert?

Beide Wege sind sind richtig und funktionieren. Das sind idr. 
Designentscheidungen und jeder machts wies ihm am besten gefällt.

von Frank K. (fchk)


Lesenswert?

Wenn Du einen Debugger benutzt, kannst Du beim Debug Build einen 
Breakpoint vor dem return machen und Dir den Inhalt von clkRate 
anschauen.

fchk

von Oha! (Gast)


Lesenswert?

Alles klar; Danke!

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.