Hallo.
Ich überlege mir derzeit wie ich am galantesten eine konfigurierbare
debug-Ausgabe in meinem Code erledige.
Schön wäre es wenn so wenig wie möglich Platz im Code dafür eingenommen
wird.
Ich habe printf zunächst mal umgeleitet (USART).
Jetzt könnte ich also z.B. im modul spezialfunktionen.c
1 | void funktion_eins(uebergabe1)
|
2 | {
|
3 | int test;
|
4 | //hier passiert irgendwas
|
5 | printf("%i",test);
|
6 | }
|
eine Debugausgabe machen.
Jetzt will ich aber dass die Ausgabe nur dann passiert wenn das auch
gewünscht, bzw so eingestellt ist. Z.B. mit der variable
debug_spezialfunktionen. Dazu mach ich mir also ein Makro:
1 | #define DEBUG_OUT(printf_parameters) if(debug_spezialfunktion) printf((printf_parameters));
|
2 |
|
3 | debug_spezialfunktion = 1;
|
4 |
|
5 | void funktion_eins(uebergabe1)
|
6 | {
|
7 | int test;
|
8 | //hier passiert irgendwas
|
9 | DEBUG_OUT("%i",test);
|
10 | }
|
Soweit so gut. Mir ist nun aufgefallen dass in allen meinen .c Dateien
das Makro gleich aussieht wenn man den Vergleichsparameter noch vorher
per Präprozessor definiert.
Für spezialfunktionen.c wäre das z.B.
1 | #define DEBUG_VERGLEICH debug_spezialfunktion
|
2 | #define DEBUG_OUT(printf_parameters) if(DEBUG_VERGLEICH) printf((printf_parameters));
|
Oder auch für spezialalgorithmen.c
1 | #define DEBUG_VERGLEICH debug_spezialalgorithmen
|
2 | #define DEBUG_OUT(printf_parameters) if(DEBUG_VERGLEICH) printf((printf_parameters));
|
jetzt wäre es doch irgendwie nett wenn ich die zeile
1 | #define DEBUG_OUT(printf_parameters) if(DEBUG_VERGLEICH) printf((printf_parameters));
|
von einer datei debugmakros.c laden könnte und zwar nach
1 | #define DEBUG_VERGLEICH debug_spezialalgorithmen
|
sodass ich gegebenfalls das makro DEBUG_OUT ändern kann (z.B.
zeitstempel einfügen o.ä.) und das wird dann auf alle Funktionen
angewandt.
Lässt sich das irgendwie bewerkstelligen?