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