Ich würde je Modul eine eigene Config-Headerdatei einbinden und dort
ggf. die Fallunterscheidung machen. Dann kann man den Modulcode
unabhängig von den Boardeinstellungen pflegen/weitergeben/aktualisieren.
Beispiel:
1 | // uart_config.h
|
2 |
|
3 | #include "targetBoard.h"
|
4 |
|
5 | #if defined (BOARD1_USED)
|
6 | // Einstellungen für Board 1
|
7 | #elif defined (BOARD2_USED)
|
8 | // Einstellungen für Board 2
|
9 | #endif
|
1 | // uart.c
|
2 |
|
3 | #include "uart_config.h"
|
4 |
|
5 | // Code
|
Wenn Du die uart.c jemand anderem zur Verfügung stellst, kann er sie
ohne Änderungen in sein Projekt aufnehmen, er muss ggf. nur
uart_config.h auf seinen eigenen Auswahlmechanismus ändern:
- Er kann Einstellungen für seine eigenen Boards ergänzen.
- targetBoard.h darf anders heißen.
- Das Board kann alternativ per Compileroption definiert werden.
- Er nutzt für jedes Projekt eine eigene uart_config.h bzw. inkludiert
darin eine, die nur die Einstellungen des richtigen Boards enthält.
- Er inkludiert eine globale config.h.
- ...
Andernfalls müsste er für alle diese Änderungen uart.c ändern. Wenn Du
ihm später eine neue Version von uart.c gibst, müsste er darin die
Änderungen jedes mal wieder nachziehen. Wenn die Einstellungen vom Code
getrennt sind, kann man uart.c dagegen einfach austauschen, solange
keine neuen Einstellungen ohne Defaultwert dazu kommen.