[linux-l] Re: Arrays in C
Steffen Dettmer
steffen at dett.de
Mo Nov 14 23:41:06 CET 2005
* Rocco Rutte wrote on Thu, Nov 10, 2005 at 11:01 +0000:
> >>#define DEBUG(fmt, args...) \
> >> fprintf(stderr, "%s: " fmt "\n", __FUNCTION__, ##args)
>
> >geht aber nicht, wenn ich schreibe:
>
> >/* akademisch beklopptes Beispiel ich weiss */
> >snprintf(fmt, "At %d (%%s)");
> >DEBUG(fmt, "Hier");
>
> >daher hier vielleicht lieber va_list, machen wir in der Firma jedenfalls
> >so (format string neu erzeugen), glaub ich.
>
> oder einfach:
>
> #define DEBUG(X) do { \
> fprintf (stderr, "%s: ", __FUNCTION__); \
> /*fprintf X; */ \
fprintf (stderr, X); \
> fprintf (stderr, "\n");
> } while (0);
Warum do {} while? {} block ist hier doch nichtmal notwendig, oder?
DEBUG("%d", 15) gibt einen Fehler - so ein Makro kann dann aber doch gar
keine Format-Strings mehr?!
> oder besser:
>
> #ifdef __GNUC__
> #define DEBUG(X) do { \
> fprintf (stderr, "%s:%d: ", __FUNCTION__, __LINE__); \
lieber "%s %s:%d: ", __FUNCTION__, __FILE__, __LINE__
oder sowas, __FUNCTION__ und __FILE__ müssen ja nicht eindeutig sein
(ich sag nur "static void module_init_once(void);" :)).
oki,
Steffen
--
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.
Mehr Informationen über die Mailingliste linux-l