Frage zu Präprozessor-Code

Gast #1983971
Lesenswert?

Hallo Experten!
ich habe eine Frage zu Preprozessor und mein C-Code...

1. in meiner header-Datei hab ich folgendes
1
#define SENSOR_0  0xe0  
2
#define SENSOR_1    0xe2  
3
#define SENSOR_2    0xe4  
4
#define SENSOR_3   0xe6  
5
#define SENSOR_4   0xe8  
6
#define SENSOR_5   0xea  
7
#define SENSOR_6   0xec

und dazu diese makro-Funktion
1
#define getSensAdr(NR) SENS_ADR_##NR

so... nun wenn ich im C-Code folgendes schreibe
1
getSensAdr(5)
 bekomme ich den Wert 0xea zurück, bis dahin alles super ist genau das 
was ich will!

doch das Problem ist wenn ich anstatt einen int, eine Variable übergeben 
will, zB. so:
1
int i=5
2
getSensAdr(5)

dann bekomme ich folgende Fehlermeldung vom Compiler (gcc)
../sensor.c:46: error: 'SENS_ADR_i' undeclared (first use in this 
function)

irgendwie muss das auch gehen oder nicht?
irgendwie mit # und mit ##...
irgendeine Idee???

Vielen Dank!
schöne Grüße
Gast #1983983
Lesenswert?

Du meintest vermutlich:
1
int i=5
2
getSensAdr(i)

oder?

>irgendwie muss das auch gehen oder nicht?

So? Warum?

Denk dran, das der Präprozessor, vor der eigentlichen Kompilierung den 
Text liest und lediglich Textersatz durchführt. Er weiss nichts von C, 
von Variablen oder sonstwas.
Er kennt nur Text. Deswegen hat er aus dem "getSensAdr(i)" auch ganz 
folgerichtig "SENS_ADR_i" gemacht.
Das i für eine Variable steht interessiert den Präprozessor überhaupt 
nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren