[ freediver @ 09.09.2004. 13:10 ] @
Hocu da uradim sledecu stvar:

Imam funkciju
void DE_Handler(char *filename, int line, int code, const char *fmt, ...)


i hocu da napravim makro slican ovom

#define DEBUG(arg) DE_Handler(__FILE__, __LINE__, DE_DEBUG, arg)


tj da mogu da kazem u kodu:

DEBUG("This is a %s", "test");


E sad malo sam ceprkao oko ovoga i otrkio da C standard od '99 podrzava variabilnu listu argumenta za makroe:

#define myprintf(...) printf(__VA_ARGS__)

ili u mom slucaju:

#define DEBUG(...) DE_Handler(__FILE__, __LINE__, DE_DEBUG, __VA_ARGS__)


Problem je sto ovo radi na gcc-u a meni treba da radi u .NET-u pod windowsom. Izgleda da je Microsoft zaboravio da ukljuci ovaj standard?

Da li neko zna za resenje ovog problema?

Hvala unapred

[ blaza @ 09.09.2004. 16:02 ] @
Najbezbolnije resenje je:
Code:

#define DEBUG DE_Handler(__FILE__, __LINE__, DE_DEBUG,

Ovaj makro mozes koristiti ovako:
Code:

DEBUG "Hello!");
DEBUG "This is %s", "test");
[ freediver @ 10.09.2004. 08:50 ] @
Hvala, zanimljiva ideja ;)

Ipak zanima me da li ima jos neko resenje?

[ yooyo @ 13.09.2004. 21:42 ] @
Moze i na ovaj nacin...

#define LOGH(a) printf("\n%s: %d - ", __FILE__, __LINE__); printf a;

int main(int argc, char* argv[])
{
LOGH(("Test %d i %d i string %s\n", 12, 15, "Tralalala"));
return 0;
}

Primer daje na izlazu:
d:\!_net\makro\makro.cpp: 5 - Test 12 i 15 i string Tralalala


yooyo