# ein Tupel in C definieren

8

Ich möchte in der Lage sein, ein Tupel zu definieren, das die Argumente darstellt, die von anderen Makros benötigt werden.

Ich denke, der beste Weg, um zu zeigen, was ich will, ist ein Beispiel:

%Vor%

Ich möchte OUTPUT(LED) dann zu expandieren:

%Vor%

Das Problem, das ich bekomme, ist mit der Reihenfolge der Erweiterung zu tun, und führt zu dem folgenden Fehler:

  

Makro "OUTPUT" benötigt 3 Argumente, aber nur 1 gegeben

Dies ist für ein AVR-Projekt mit kundenspezifischer Hardware gedacht, wo ich LED und andere Komponenten mit einem entsprechenden LED_PORT LED_DDR und LED_PIN definiert habe.

Ich möchte dann mehr Makros definieren, die diese LED aufnehmen können und die entsprechenden Argumente verwenden, um die kürzeste mögliche Länge zu erreichen.

Ist das mit dem Standard C-Präprozessor möglich?

    
flungo 27.04.2015, 13:48
quelle

1 Antwort

6

Sie können dem Makro eine Umleitungsebene hinzufügen, um dies zu erreichen:

%Vor%

Beim erneuten Scannen wird spec vor OUTPUT_I erweitert, sodass das Makro OUTPUT_I drei Parameter anzeigt.

    
Wintermute 27.04.2015, 13:54
quelle

Tags und Links