Hallo,
ich bin gerade dabei eine Bibliothek für ein Modul zu erstellen, das für
unterschiedliche Prozessoren compiliert wird. Über das Makefile kommt
eine Direktive -DPROCESSOR=atmega32 über den Compiler rein, und aufgrund
dieser will ich eine Methode benennen.
Die Methode soll dann im jeweiligen Objectfile dcs_XXXXX_init() heißen,
wobei die XXXXX durch die PROCESSOR-Direktive ersetzt werden sollen.
Mein bisheriger Ansatz ist ein Makro das so aussieht:
1 | #define pre_create_hwFunc(proc) dcs_ ## proc ## _init
|
schreibe ich
1 | void pre_create_hwFunc(atmega32)() // wird zu dcs_atmega32_init()
|
2 | {
|
3 | ....
|
4 | }
|
funktioniert das so wie es soll, sprich die Funktion heißt dann
dcs_atmega32_init();
Will ich dem Makro die über den Compiler definierte Direktive mit dem
Prozessortyp übergeben, nimmt er PROCESSOR als Text im Makro und die
Methode bekommt einen falschen Namen.
1 | void pre_create_hwFunc(PROCESSOR)() // wird zu dcs_PROCESSOR_init()
|
2 | {
|
3 | ....
|
4 | }
|
Kann ich irgendwie dem Präprozessor mitteilen, dass es sich bie
PROCESSOR um eine definierte Direktive handelt und er den definierten
WERT verwenden soll, anstatt dem Namen der Direktive?
Bin natürlich auch für alle anderen Lösungsansätze offen und dankbar.
regards und Danke schonmal
Thomas
P.s. Die Funktion muss bei jedem Compiliervorgang anders heißen, damit
ich beim Verwenden der Library irgendwie den Linker dazu bewegen kann
das richtige Objectfile für die Zielhardware zu verwenden ;) Man sollte
eben doch nur plattformunabhängige Libraries machen :P