Forum: PC-Programmierung Makro mit ## für funktionsparameter


von Lars (Gast)


Lesenswert?

Hallo,
ist es möglich in c mittels ein Makro für ein Funktionsparameter eine 
Funktion aufzurufen?
1
#define MAKRO(spn) (DTC_##spn##_1)
2
3
updateDtc(MAKRO(sensor->spn), TRUE);
sensor ist eine struktur wo unter anderem die spn hinterlegt ist.
wenn ich es so bauen möchte, bekomme ich den fehler:
'DTC_snsor' undeclared

Der nimmt also nicht den wert, welcher in sensor->spn hinterlegt ist.
Ist so etwas überhaupt möglich?

von Dirk K. (merciless)


Lesenswert?

Lars schrieb:
> Der nimmt also nicht den wert, welcher in sensor->spn hinterlegt ist.
> Ist so etwas überhaupt möglich?
Woher soll der Compiler zur Compilezeit
wissen, wass zur Laufzeit in spn steht?

merciless

von Rolf M. (rmagnus)


Lesenswert?

Lars schrieb:
> wenn ich es so bauen möchte, bekomme ich den fehler:
> 'DTC_snsor' undeclared

Ja, dein Makro sagt ja, dass er aus dem sensor->spn DTC_sensor->spn_1 
machen soll. Und offenbar gibt es nichts, das DTC_sensor heißt.

> Der nimmt also nicht den wert, welcher in sensor->spn hinterlegt ist.
> Ist so etwas überhaupt möglich?

Der Präprozessor macht Textersetzung im Quellcode. Was später mal 
irgendwann bei der Ausführung in irgendwelchen Variablen steht, kann er 
gar nicht wissen.

: Bearbeitet durch User
von Mark B. (markbrandis)


Lesenswert?

Schau Dir doch gerne mal Deinen Code an, nachdem der Präprozessor (und 
nur der) ihn bearbeitet hat. Wenn Du mit dem gcc übersetzt, geht das mit 
der Option -E.

https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options

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.