Forum: Mikrocontroller und Digitale Elektronik Makro und Defines Problem


von Maddin (Gast)


Lesenswert?

Hi,

ich habe ein kleines Problem mit einem Makro:

#define LED1      2,2
#define LED2      2,3

#define MAKRO_A(a,b)   funktion(a,b)
#define MAKRO_B(c,d)   MAKRO_A(c,d)

Aufruf:

MAKRO_B(LED1);

Problem:

Meldung:

../test.c:593:36: error: macro "MAKRO_B" requires 2 arguments, but only 
1 given

Kann es sein dass erst die Makros und dann die defines aufgelöst werden, 
so dass zur Zeit der Auflösung des Makros nur das Define und nicht 
dessen ersetzung "gesehen" wird?

Wenn ja, wie kann ich das umgehen. Die Makro in Makro verkapselung kommt 
durch die Verteilung auf mehrere c-Dateien zustande und ist nicht ganz 
so eindeutig wie hier dargestellt...

Danke,
M.
von Klaus W. (mfgkw)


Lesenswert?

Wenn es nicht anderweitig kneift, kannst du das so ändern:
1
#define LED1      2,2
2
#define LED2      2,3
3
4
#define MAKRO_A(a)   funktion(a)
5
#define MAKRO_B(c)   MAKRO_A(c)
6
7
    MAKRO_B(LED1);
von Maddin (Gast)


Lesenswert?

...das geht! aber wie o. warum kommt der Fehler zustande?

Gruß,
M.
von Achim M. (minifloat)


Lesenswert?

Maddin schrieb:
> Wenn ja, wie kann ich das umgehen. Die Makro in Makro verkapselung kommt
> durch die Verteilung auf mehrere c-Dateien zustande und ist nicht ganz
> so eindeutig wie hier dargestellt...

MAKRO_B ist doch dasselbe wie MAKRO_A, pack doch MAKRO_A in eine eigene 
Headerdatei, die dann in verschiedenen Sourcen eingebunden wird.
mfg mf
von Ralf G. (ralg)


Lesenswert?

Maddin schrieb:
> aber wie o. warum kommt der Fehler zustande?

Durch die Reihenfolge in der Abarbeitung der Makros/ Textersetzungen
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.