Hallo, habe einen AT89C51CC03 und ein Beispielprogramm. Hier gibt es das Schlüßelwort "using". Das Schlüßelwort steht hinter manchen Funktionen. Das sieht dann etwa so aus: void _Init(int number) using 3 {...} Was ich auch schon gesehen habe ist etwa sowas: void _Init1(int count) reentrant {...} Was macht using, was reentrant? Für Eure Mühe vielen Dank im voraus Grüße pontonfrog
Das ist eine compilerspezifische Erweiterung, die im Handbuch des betreffenden Compilers (hier wohl irgendeiner für MCS-51) beschrieben sein sollte. Normales C ist es jedenfalls nicht. Schlüssel wird wie Schüssel übrigens schon immer mit Doppel-s geschrieben, das ü wird ja auch nicht gedehnt gesprochen.
"using" kenne ich von SDCC und besagt, welche Prioritätsebene ein Interrupt bekommen soll (siehe dazu in nem C51 Datenblatt) "...) using 3" besagt also, daß der INT in die Ebene 3 gesetzt werden soll. Zu reentrant weiß ich auch nix, ausser daß ich das auch schonmal irgendwo gesehen habe ... mal den goockel dazu befragt?
"using" ist nur was für Profis und kann manchmal Interrupts etwas beschleunigen. "using 3" bedeutet, daß die gesamte Registerbank 3 für Interrutps reserviert wird und nicht mehr als SRAM zur Verfügung steht. Blöd also, wenn der Interrupt nur 3 Register von den 8 benutzt. "using 3" bedeutet aber auch, daß sich der Compiler nicht länger um die Registersicherung kümmert. Schreibt man also "using 3" in 2 Interrupthandler mit verschiedener Priorität und die treten dann gleichzeitig auf, krachts gewaltig. Der eine zieht dem anderen die Register unterm Hintern weg. Also "using" unbedingt weglassen, wenn man nicht genau weiß, was man damit anrichtet. "reentrant" bedeutet, daß mehrere Instanzen einer Funktion laufen können, z.B. als rekursive Funktion. Natürlich ist dadurch eine reentrante Funktion langsamer und benötigt mehr Stack. Peter
Welcher §$!# hat 'using' als Compilererweiterung beschlossen? "using" ist nämlich ein C++ Schlüsselwort...
Das ist bekannt, aber in C++ steht es an einer absolut anderen Stelle, also trotzdem gut zu unterscheiden
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.