Hi, ich will Timer-Methoden erstelln. Aber wenn man das schreibt: #define CAT_3_(x, y, z) x ## y ## z #define CAT_3(x, y, z) CAT_3_(x, y, z) und dann im Code so was: void timer_init(int timernum, uint8_t time) { //... CAT_3(TCCR, timernum, A) = 0x00; //oder so, nur ein Beispiel //... } bekomme ich einen Error: Symbol 'TCCRtimernumA' could not be resolved Wahrscheinlich wird nur der name, nicht der inhalt der variable genoomen. Kann man da ändern? Danke
Der Präprozessor kennt keine Variableninhalte. Du könntest allenfalls auch timer_init als Makro definieren, so dass aus timernum ein Präprozessorsymbol wird.
[gelöscht durch Mod] Yalu X. schrieb: > Der Präprozessor kennt keine Variableninhalte. Hatte ich befürchtet.... Schade > Du könntest allenfalls auch timer_init als Makro definieren, so dass aus > timernum ein Präprozessorsymbol wird. Danke, für den Tipp, ich schau mal ob sich das umsetzen lässt
:
Bearbeitet durch Moderator
@mod Schön dass der Post schon gelöscht wurde. kann dann vllt auch mein Post so editiert werden, dass das Zitat verschwindet?
preAVR schrieb: > Yalu X. schrieb: >> Der Präprozessor kennt keine Variableninhalte. > > Hatte ich befürchtet.... Schade Wie soll er auch? Er wird zur Compilezeit noch vor dem eigentlichen Compiler aufgerufen. Daß es die Variable gibt weiß er gar nicht, geschweige denn, was sie später beim Ausführen des Programms dann enthalten wird.
Solche Spielchen sind eher nicht empfehlenswert, sie verschlechtern nur die Lesbarkeit.
Rolf Magnus schrieb: > Wie soll er auch? Er wird zur Compilezeit noch vor dem eigentlichen > Compiler aufgerufen. Daß es die Variable gibt weiß er gar nicht, > geschweige denn, was sie später beim Ausführen des Programms dann > enthalten wird. Ja, okay, ich hatte vergessen zu erwähnen, dass es eine const-Varible ist, die der Konstruktor definiert. Aber das ändert ja auch nichts, wenn ich mich nicht irre?
preAVR schrieb: > Ja, okay, ich hatte vergessen zu erwähnen, dass es eine const-Varible > ist, die der Konstruktor definiert. > Aber das ändert ja auch nichts, wenn ich mich nicht irre? Richtig. Der Präprozessor wertet Variablendefinitionen gar nicht aus. Sieh ihn als eine Art simplen Texteditor, für den du die Anweisungen im zu bearbeitenden Text selbst hinterläßt. Was dieser Text bedeutet (abgesehen von den Präprozessor-Anweisungen), ist dem Präprozessor nicht bekannt.
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.