...../PluginLoader.h:34: multiple definition of 'Dummy_Func_For_Generating_FUNCTION_NAME_Macro()'
Come verificare se __PRETTY_FUNCTION__ può essere utilizzato?
L'errore sopra riportato viene emesso per il codice riportato di seguito. Ho incluso delle guardie nel mio file. E tutto il resto va bene.
EDIT: Quello che stavo cercando di raggiungere è stato quello di verificare se __PRETTY_FUNCTION__
è stato definito, e se fosse, usarlo più avanti nel codice tramite FUNCTION_NAME
macro (per scopi di registrazione). Se __PRETTY_FUNCTION__
non è definito, utilizzare la cosa migliore successiva e così via. Tuttavia, le risposte che ho ottenuto mi hanno fatto capire che questo è impossibile. Quindi, se __PRETTY_FUNCTION__
e tutti questi altri non sono macro, quali sono? E come posso verificare se una determinata implementazione ne ha una o meno?
void Dummy_Func_For_Generating_FUNCTION_NAME_Macro()
{
#ifndef FUNCTION_NAME
#ifdef __PRETTY_FUNCTION__
#define FUNCTION_NAME __PRETTY_FUNCTION__
#elif __FUNCTION__
#define FUNCTION_NAME __FUNCTION__
#elif __func__
#define FUNCTION_NAME __func__
#else
#define FUNCTION_NAME ""
#endif
#endif
}
qual è il valore di '__PRETTY_FUNCTION__',' __FUNCTION__' e '__func__'? –
@Adrien: sono macro predefinite, ma non tutte sono implementate per tutti i compilatori. –
Hai inserito questa funzione in un'intestazione? Se l'intestazione è inclusa più volte, il compilatore potrebbe lamentarsi di trovare la stessa funzione più di una volta. – Patrick