Forum: Mikrocontroller und Digitale Elektronik Präprozessor Makro ineinande Verschachteln?


von __Son´s B. (bersison)


Angehängte Dateien:

Lesenswert?

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
von __Son´s B. (bersison)


Lesenswert?

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!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

__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...

von Walter T. (nicolas)


Lesenswert?

__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
von __Son´s B. (bersison)


Lesenswert?

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
Noch kein Account? Hier anmelden.