Kurze (villeicht dumme?) Frage: Wenn eine Funktion habe z.B :
uint8_t e_BattCap(){
digitalWrite (e_Bat_TestEnPin, on); // e_Bat zur Prüfung belasten
delay(1000); // belaste für 1 Sec.
uint8_t capa = map(analogRead(A1),0,1023,0,3); // die Spannung der belasteten e_bat messen
digitalWrite (e_Bat_TestEnPin, off); // e_Bat wieder entlasten
return capa;
}
via return einen Wert zurück gibt, so wie hier der Wert 'capa', wird dieser Wert eigentlich über den Stack zurückgegeben und erst nach rückkehr aus der funktion der beim Aufruf genanten Variablen zugewiesen. Ich rufe ja die funktion bspw. mit :
byte capaciti = e_BattCap();
auf.
ich habe jedoch festgestellt, dass ich die Funktion auch mit;
e_BattCap();
aufrufen kann - ok bei dieser Funktion macht das keinen Sinn , ich hab aber andere Funktioen, bei denen der Rückgabewert nicht immer benötigt wird.
Die Frage ist nur, was passiert dann mit dem Rückgabewert? bleibt der auf dem Stack liegen und kann mit der Zeit zu einem Stack Overflow führen?
Der Wert wird schon vom Compiler wegoptimiert, weil er nicht mehr gebraucht wird. Der kann übrigens sogar den kompletten Umweg über das Stack wegoptimieren, wenn die Zielvariable die einzige ist, die das Funktionsergebnis zugewiesen bekommt.
Euch allen vielen herzlichen Dank, damit ist mir geholfen und ich brauche da keine Angst mehr haben. Die betroffene Fuktion ist bei mir der Error-Handler (handelt mechanische und elektrische Hardware-Fehler, wie Durchgebrannte Sicherungen und blokierte Antriebe , wenn das system dias Problem nicht automatisch lösen kann) Beim Error-Resume z.B. brauche ich den Rückgabewert des Handlers nicht.
Und danke euch, dass niemand mein 'delay' angemosert hat.