OFFTOPIC: Makra s prom. poctem parametru

Martin Spirk spirk na kla.pvt.cz
Pátek Květen 21 07:58:19 CEST 1999


Dobre rano,

omlouvam se za offtopic, ale tohle je jedine misto kde muzu dostat odpoved v
cestine. (Slovenstinu samozrejme taky beru, jen ta anglictina je slabsi  :-).) 
Je v C mozne nejak udelat $SUBJ ?
 Aby to bylo srozumitelne radsi uvedu na co to potrebuju:

Chci si udelat funkci ktera me bude nekam logovat chyby programu. Chtel bych aby
v tom logu bylo krome vlastni chybove hlasky  i jmeno modulu a cislo radky kde
k chybe doslo. Takze deklarace funkce vypada takto

void log_chyb(char *modul, int c_radku, char *hlaska);

a volani treba:

log_chyb(__FILE__,__LINE__,"Nepodarilo se otevrit soubor");

To __FILE__,__LINE__ me zrovna moc nebavi psat, tak jsem udelal makro

#define CHYBA(x)        log_chyb(__FILE__,,__LINE__,(x))

a volani se zjednodusi na CHYBA("Nepodarilo se otevrit soubor");
Nevim jak vlastne tyhle vnoreny makra maji spravne fungovat, ale tohle jsem
zkusil prelozit na Linuxu s gcc a fungovalo to, takze doufam ze to neni nejaka
zvrhlost.  Me to bohuzel neuspokojilo, tu funkci log_chyb() chci upravit tak,
aby pracovala jako klasicke printfy, tj. abych mohl volat:

CHYBA("Nepodarilo se otevrit soubor %s",jmeno_souboru);

upravit tu funkci log_chyb umim, to neni problem, ale nedokazu upravit to
makro, zkousel jsem tri tecky, ale to se prekladaci nelibilo a ani se mu
nedivim. Nic jineho me nenapadlo, budu muset opravdu v kazdem volani psat
__FILE__,__LINE__?

Diky za napady.

A jeste jedna drobnost: Da se z C volat funkce prelozena s C++? Proste neco jako
extern "C" f();
ale obracene?

			Martin


Další informace o konferenci Linux