Hallo! Habe aus Übersichtlichkeit, möglichst viele Parameter als Präproz.Makros defeniert. Seitdem bekomme ich vom Compiler dauernd Warn- und Fehlermeldungen. Kann man Präpr.Makros nicht miteiander verschachteln? So werden; SPG_EING_PORT SCHWELLE_OBER_SPG SCHWELLE_UNTER_SPG AUSGANG_SET_HIGH AUSGANG_SET_LOW ausser von weiteren Pp-Makros, nicht mehr verwendet/aufgerufen.
:
Bearbeitet durch User
Oh, habe den Fehler gefunden! #define AUSGANG_SET_HIGH (port,mask) ((port) |= (1<<mask)) #define AUSGANG_SET_LOW (port,mask) ((port) &= ~(1<<mask)) Leerzeichen zw. ...HIGH (port... und Leerzeichen zw. ...LOW (port... #define AUSGANG_SET_HIGH(port,mask) ((port) |= (1<<mask)) #define AUSGANG_SET_LOW(port,mask) ((port) &= ~(1<<mask)) Problemlos!
__Son´s B. schrieb: > Kann man Präpr.Makros nicht miteiander verschachteln? Du musst Makros definieren bevor du sie verwendest. Das betrifft hier die beiden letzten AUSGANG_SET_xxx Makros: die müssen weiter nach oben...
__Son´s B. schrieb: > Kann man Präpr.Makros nicht miteiander verschachteln __Son´s B. schrieb: > Kann man Präpr.Makros nicht miteiander verschachteln? Kann man. Aber das Hintereinanderhängen von C-Befehlen in einem Makro ist etwas kniffliger. Und: Extrem fehlerträchtig. Mein Tipp: Nimm stattdessen static-inline-Funktionen. Viele Grüße W.T. Und weil die Frage dann eh kommt: Es geht mit einer do-while-Schleife, die nur ein einziges Mal ausgegführt wird. Aber ich rate davon ab.
:
Bearbeitet durch User
Walter T. schrieb: > Und weil die Frage dann eh kommt: Es geht mit einer do-while-Schleife, > die nur ein einziges Mal ausgegführt wird. Aber ich rate davon ab. Bezieht sich das auf dei "static-inline-Funktionen"? Eigentlich würde ich gerne einen isolierten Bereich schaffen, in dem ich alle Grundparameter (Ports, Spannungsschwellen, Zeiten etc) einmalig vorgebe. PräProz Makros wird nicht der richtige Weg sein!?!?! Ev. "struct"? Konnte mich aber leider noch nicht damit beschäftigen.
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.