> Wie es scheint, ist es unendlich schwer, mal ein passendes Beispiel
> zu posten.
Wenn's an Beispielen gebricht, hier ist ein weiteres relativ
nützliches:
Ich möchte zu Debug-Zwecken während des Programmlaufs den Inhalt der
Variablen eine_int_variable ausgeben. Dies geht bspw. so:
1 | printf("eine_int_variable = %d\n", eine_int_variable);
|
Weil ich zu faul bin, den langen Variablennamen zweimal zu tippen,
bastle ich mir einfach folgendes Makro:
1 | #define DBG_INT(v) printf(STR(v)" = %d\n", v)
|
und schreibe dann nur noch
1 | DBG_INT(eine_int_variable);
|
Das funktioniert nicht nur mit Variablen, sondern mit beliebigen
Ausdrücken. Hier ein vollständiges Beispiel:
1 | #include <stdio.h>
|
2 | #include <string.h>
|
3 | #include <math.h>
|
4 |
|
5 | #define STR2(x) #x
|
6 | #define STR(x) STR2(x)
|
7 |
|
8 | #define DBG_INT(v) printf(STR(v)" = %d\n", v)
|
9 | #define DBG_DBL(v) printf(STR(v)" = %g\n", v)
|
10 |
|
11 | int main(void) {
|
12 | int i;
|
13 | double d;
|
14 |
|
15 | i = 10 * 10;
|
16 | DBG_INT(i);
|
17 |
|
18 | d = sqrt(2.);
|
19 | DBG_DBL(d);
|
20 |
|
21 | DBG_DBL(4 * asin(d/2));
|
22 | DBG_INT(2 * i + strlen("test"));
|
23 |
|
24 | return 0;
|
25 | }
|
Das Programm liefert folgende Ausgabe:
1 | i = 100
|
2 | d = 1.41421
|
3 | 4 * asin(d/2) = 3.14159
|
4 | 2 * i + strlen("test") = 204
|
Schick, oder?