A. K. wrote:
> oder bei AVR für Text im ROM
Oder
1 |
|
2 | #if DEBUG
|
3 | # define trace(s,...) printf_P (PSTR(s) , ##z)
|
4 | #else
|
5 | # define trace(...) (void) 0
|
6 | #endif
|
Um Warnungen etc zu vermeiden bei
1 | if (x)
|
2 | trace (a, b);
|
3 | else
|
4 | ...
|
Die Leerzeichen um das , sind wichtig, damit es auch für
funktioniert.
Bei einem Block im Makro sollte man besser
1 | #define X(Y) \
|
2 | do { c-code } while(0)
|
schreiben anstatt
1 | #define X(Y) \
|
2 | { c-code }
|
weil man in der Quelle gewohnt ist, X; zu schreiben and nicht X
1 | if (x)
|
2 | X(0);
|
3 | else
|
4 | x = 1;
|