Präprozessor Makro ineinande Verschachteln?

OP #4487987
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
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
__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
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.