grundelegende Frage: int vs const int
|
27.01.2021, 08:00
Beitrag #1
|
|||
|
|||
grundelegende Frage: int vs const int
Moin,
der prinzipielle Unterschied ist mir klar. "int" deklariert eine Variable und "const int" deklariert eine Konstante, kann also nicht mehr verändert werden. Aber macht man das nur, um den Code sauber und nachvollziehbar zu machen, oder ist der kompalierte Code schneller, wenn ich statt Variablen Konstanten deklariere, z.B. für meine Pin-Konfiguration? VGM |
|||
27.01.2021, 09:07
(Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2021 09:08 von MicroBahner.)
Beitrag #2
|
|||
|
|||
RE: grundelegende Frage: int vs const int
Zum einen ist es sicherer, weil der Compiler keine Änderung zulässt an diesen Konstanten. In vielen Fällen ist es auch schneller und RAM-sparender, weil der Compier - wo immer möglich - gar keine 'Variable' im RAM anlegt, sondern in den Anweisungen direkt den konstanten Wert verwendet.
Gruß, Franz-Peter |
|||
27.01.2021, 14:00
Beitrag #3
|
|||
|
|||
RE: grundelegende Frage: int vs const int
(27.01.2021 09:07)MicroBahner schrieb: Zum einen ist es sicherer, weil der Compiler keine Änderung zulässt an diesen Konstanten. In vielen Fällen ist es auch schneller und RAM-sparender, weil der Compier - wo immer möglich - gar keine 'Variable' im RAM anlegt, sondern in den Anweisungen direkt den konstanten Wert verwendet. Danke für die Antwort. Und ich habe eben in einem anderen Sketch gesehen, dass Code: #define LED 13 Code: const byte LED = 13; |
|||
27.01.2021, 14:14
(Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2021 14:15 von MicroBahner.)
Beitrag #4
|
|||
|
|||
RE: grundelegende Frage: int vs const int
(27.01.2021 14:00)mhoeting schrieb: Hat das am Ende den gleichen EffektVordergründig schon. 'Unter der Haube' passiert aber etwas ganz anderes. Die Zeilen, die mit '#' anfangen, bearbeitet der 'Präprozessor'. Das ist ein reines Textersetzungsprogramm, das vor dem eigentlichen Kompiler läuft. Der Präprozessor weis nichts von C++, der macht reine Textersetzung. In dem Fall wird also überall, wo 'LED' im Code erscheint das durch '13' ersetzt. Erst nach dem Präprozessorlauf bekommt der Compiler deinen Code überhaupt zu sehen. Da sind dann alle Zeilen mit '#', weg und alle Texte ersetzt. Von deinem 'LED' sieht der Compiler nichts, für den ist es exakt das gleiche, als hättest Du selbst überall '13' hingeschrieben. Das 'const byte LED = 13' ist dagegen eine C++-Anweisung für den Compiler. Der weis also jetzt, dass Du da ein 'byte' definiert hast, dass Du aber im Programm nicht mehr ändern willst. Der Compiler ist jetzt besser in der Lage Prüfungen zu machen, und dich auf Fehler oder Ungereimtheiten ('warnings') hinzuweisen. Deshalb ist die 2. Variante zu bevorzugen. Gruß, Franz-Peter |
|||
27.01.2021, 14:37
Beitrag #5
|
|||
|
|||
RE: grundelegende Frage: int vs const int
(27.01.2021 14:14)MicroBahner schrieb:(27.01.2021 14:00)mhoeting schrieb: Hat das am Ende den gleichen EffektVordergründig schon. 'Unter der Haube' passiert aber etwas ganz anderes. Vielen Dank für diese ausführliche und gute Erklärung! |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste