[linux-l] Re: Arrays in C

Rocco Rutte pdmef at cs.tu-berlin.de
Do Nov 10 12:01:34 CET 2005


Hi,

* Steffen Dettmer [05-11-09 23:00:33 +0100] wrote:
>* Axel Weiß wrote on Sun, Nov 06, 2005 at 09:31 +0100:

>> Wenn ich z.B. den 
>> gcc voraussetze (nur der hat ein __FUNCTION__), sieht mein 
>> Standard-Ausgabemakro etwa so aus:

>> #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, "\n");
   } while (0);

   DEBUG(("%s", foo));

oder besser:

   #ifdef __GNUC__
     #define DEBUG(X) do { \
       fprintf (stderr, "%s:%d: ", __FUNCTION__, __LINE__); \
       fprintf X; \
       fprintf (stderr, "\n");
     } while (0);
   #else
     #define DEBUG(X) do { \
       fprintf (stderr, "%s:%d: ", __FILE__, __LINE__);
       fprintf X;
       fprintf (stderr, "\n");
     }
   #endif

   bye, Rocco
-- 
:wq!



Mehr Informationen über die Mailingliste linux-l