Quello specifico che stai cercando si chiama __func__
, ma non è esattamente una macro, poiché il suo significato cambia a seconda di dove è visto. È utile, tuttavia, e sembra una macro.
mio macro preferito al momento è __STDC_VERSION__
perché mi permette di fare questo:
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L
# define inline
# define register
# if __GNUC__ >= 2 || _MSC_VER >= 1300
# define __func__ __FUNCTION__
# else
# define __func__ "<unknown>"
# endif
#endif
Ora è possibile utilizzare le parole chiave C99 inline
, register
e __func__
a dichiarare le cose senza doversi preoccupare se o non il compilatore che stai utilizzando supporta la funzionalità C99! In realtà, il bit per inline
è più complesso in quanto alcuni compilatori definiscono __inline
e altre sciocchezze simili, ma si ottiene l'idea generale.
Inoltre, è possibile trovare un utile elenco di macro predefinite per l'identificazione di compilatori, sistemi operativi e architetture here.
fonte
2010-02-06 09:43:24
Questo sarà specifico della piattaforma. su quale piattaforma sei? – dirkgently
@dirkgently: '__LINE__' e' __FILE__' non sono specifici della piattaforma. E penso che ci siano altre cose simili a macro ('__FUNCTION_NAME__' non è una macro) che fanno anche parte dello standard C e/o C++. – Omnifarious
@Onniversario: Sì, ne sono a conoscenza. Dal momento che sta cercando altri, quindi la mia domanda. – dirkgently