Präprozessor Makro ineinande Verschachteln?

OP #4487987
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.
Angehängte Dateien:
OP #4488010
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!
#4488014
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.
OP #4488879
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.