(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