Hallo, ich versuche gerade zwecks Selbstschulung einen Beispielcode zu analysieren. Ich verstehe nur nicht so ganz, was folgende Definitionen bedeuten: volatile uint8_t bFlag = 0; #define TIME0_M_TICK 1 #define WORKOUT_M_RUN 2 #define UART_M_STORE 4 #define UART_M_FINAL 8 #define UART_M_BYTE 16 #define UART_M_DUMP 32 #define TASTE_M_HIT 64 Die erste Zeile ist klar: ich definiere eine Variable mit dem Namen bFlag. Aber was hat es denn mit den #define Variabeln auf sich? Bedeuten die 1,2,4,8,16,32 und 64 etwa die Wertigkeiten eines Bytes, also die einzelnen Bits? Definiere ich das erste Bit als TIME0_M_TICK und das 7te Bit als TASTE_M_HIT? Wenn ja, welche Bits von welchem Byte definiere ich denn? Oder sagt bitte einfach mal kurz, wie ihr das interpretieren, was man da sieht? Danke im voraus und Grüße Markus
ach, ich vergaß: die Bezeichnungen TIME0_M_TICK, WORKOUT_M_RUN, etc. sind frei wählbar oder müssen diese so lauten? Nochmals danke Markus
http://www.wi-bw.tfh-wildau.de/~hendrix/grundstudium/c/skript/praeprozessor.html Was die Definitionen in diesem konkreten Fall bedeuten hängt vom Rest des Programms ab.
ja, das sind wohl die Bits eines Registers oder einer Variablen. Wo die verwendet werden: musst du einfach im dazugehörigen Programm suchen Grüße Walter
überall, wo z.B. in Deinem quelltext TIME0_M_TICK auftaucht, wird es vom compiler durch eine "1" ersetzt. TIME0_M_TICK soll aber die lesbarkeit erhöhen und bietet die möglichkeit, diesen wert vor dem kompilieren schnell zu ändern und ihn nicht überall im quelltext einzelnd zu suchen und zu ändern.
es sind keine variablen mit der wertigkeit, sondern konstanten...
Man sollte sich immer vor Augen halten, daß #define eine reine Textersetzung ist, also weder Code, noch Variablen noch sonstwas erzeugt. Dann kann man es ziemlich gut verstehen. Wenn man einfach mal ins Listing schaut, sieht man auch, daß sämtliche #define Zeilen weder ne Adresse noch Codebytes haben. Peter
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.