Frage zu Preprozessorcode
-
Hallo Experten!
ich habe eine Frage zu Preprozessor und mein C-Code...1. in meiner header-Datei hab ich folgendes
#define SENSOR_0 0xe0
#define SENSOR_1 0xe2
#define SENSOR_2 0xe4
#define SENSOR_3 0xe6
#define SENSOR_4 0xe8
#define SENSOR_5 0xea
#define SENSOR_6 0xecund dazu diese makro-Funktion
#define getSensAdr(NR) SENS_ADR_##NR
so... nun wenn ich im C-Code folgendes schreibe
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:
int i=5
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
-
Das kann natürlich nicht gehen. Der Präprozessor ist ein Text-Verarbeitungswerkzeug vor dem Compilieren. Eine Variable wird aber erst nach dem Compilieren irgendwann zur Laufzeit gefüllt. Du musst dir also in C etwas zurecht basteln.
-
Nein.
Der Preprozessor ersetzt Text vor dem Compiler (Pre).
Und dann wird eben i eingesetzt.Warum machst du nicht ein globales Array int getSensAdr[]?