Hallo, man kann ja C++ ohne NEW und delete Operator auf AVRs Programmieren. Jetzt würde mich 2 Sachen interesieren: 1. Kann ich Obejkte in Unterfunktion temporär wie Variablen auf dem Stack anlegen so das die nach dem Verlassen der Funktion wieder gelöscht werden? Also z.B. meineFunktion(){ meinObjekt a; meinObjekt b; } Hier sollte der Speicher dann wieder frei sein... . 2. Wie sage ich dem AVR das manche Funktionen aus Interupts aufgerufen werden damit er die Variablen nicht wegoptimiert. Also z.B. Obj::set_timeout() { timeout = 1; } Obj::machwas { while(1&&(!(timeout)); } Funktion machwas wird von extern aufgerufen und steckt in der while fest. Jetzt schlägt irgendwann der Timer Int zu und setzt ein Timeout. Wie schaffe ich es, dass sowas sicher Funktioniert? Reicht es die Variable als volatile zu definieren? Ich hoffe ihr habt ein paar ANtworten ;-). Gruß Peter
peter schrieb: > 1. > Kann ich Obejkte in Unterfunktion temporär wie Variablen auf dem Stack > anlegen so das die nach dem Verlassen der Funktion wieder gelöscht > werden? Selbstverständlich. Nur weil die Sprache C++ heißt, funktionieren ja lokale Variablen nicht anders als in C > Funktion machwas wird von extern aufgerufen und steckt in der while > fest. Jetzt schlägt irgendwann der Timer Int zu und setzt ein Timeout. > Wie schaffe ich es, dass sowas sicher Funktioniert? Reicht es die > Variable als volatile zu definieren? Ja. Es gibt keinen Grund warum das grundsätzlich anders funktionieren sollte. An dieser Stelle ist dein C++ ja nichts anderes als eine etwas andere Organisationsform deines Codes. Ob du getrennte Strukturen und Funktionen, die auf diesen Strukturen operieren hast, oder ob du beides zusammenfasst und eine 'Klasse' nennst, ändert ja am grundsätzlichen Prinzip nichts.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.