Hallo zusammen!
Um meinen Code einfacher aber trotzdem dynamisch zu gestalten, will ich
oft benötigte Funktionen in eine Bibliothek packen. Nun habe ich das
Problem, dass variable Werte beim vorcompilieren der Funktionen nicht
festgelegt sind und deswegen beim compilieren Fehler auftreten.
Der konkrete Fall sieht so aus:
Meine Hauptroutine (main.c) ruft eine Funktion auf:
1 | #include "lib.h"
|
2 | #define ADDRESS 0x22
|
3 |
|
4 | int main(void)
|
5 | {
|
6 | init_controller();
|
7 | ...
|
8 | }
|
Das Symbol ADDRESS wird wegen der Präprozessor-Direktive durch 0x22
ersetzt.
Die Funktion "init_controller" könnte nun so aussehen:
1 | void init_controller();
|
2 | {
|
3 | ...
|
4 | set_address(ADDRESS);
|
5 | ...
|
6 | }
|
Hier soll also erst das Symbol "ADDRESS" an eine weitere Funktion
übergeben werden.
Die Funktion "set_address" wiederum im Detail:
1 | void set_address(int addr)
|
2 | {
|
3 | ...
|
4 | }
|
Um eine Bibliothek zu erstellen, muss ich die Funktionen
"init_controller" und "set_address" vorcompilieren. "ADDRESS" ist aber
zur Entwicklungszeit noch unbekannt -> somit spuckt der Compiler einen
Fehler aus. Wie kann ich das umgehen?
Ich könnte nun schon in der Hauptroutine "ADDRESS" als int festlegen und
in der entsprechenden Funktion mit 'extern' verwenden. Mir wären aber
defines wesentlich lieber.
Vielen Dank für eure Anregungen und Tipps!
Daniel