(C99) empty __VA_ARGS__
Rok Papež
rok.papez na lugos.si
Čet Maj 15 23:27:33 CEST 2003
Zivjo!
Pri debug rutinah uporabljam makro __VA_ARGS__.
Primer:
--------
#define STR_DEBUG(fmt, ...) \
do { \
printf(stderr, fmt, __VA_ARGS__); \
} while(0)
char filename[] = "/etc/fstab";
STR_DEBUG("Ne morem odpreti %s", filename);
se prevede v:
do {
printf(stderr, "Ne morem odpreti %s" , filename);
} while(0);
---------------------------------------------------------------
Tezava nastopi, ko recimo poklicem:
STR_DEBUG("Preprosta napaka!\n");
tedaj se makro prevede v:
do {
printf(stderr, "Preprosta napaka!\n",);
} while(0)
In prevajalnik v tem primeru odleti z invalid syntax.
Kako bi se dalo resiti ta problem ? Ali bo res potrebno imeti dva makra ?
--
best regards,
Rok Papež.
Dodatne informacije o seznamu lugos-org