...../PluginLoader.h:34: multiple definition of 'Dummy_Func_For_Generating_FUNCTION_NAME_Macro()'
¿Cómo verificar si __PRETTY_FUNCTION__ se puede usar?
El error anterior se muestra para el siguiente código. He incluido guardias en mi archivo. Y todo lo demás compila bien.
EDITAR: Lo que estaba tratando de lograr era comprobar si __PRETTY_FUNCTION__
se definió, y si lo era, usarlo más tarde en el código a través de FUNCTION_NAME
macro (Para fines de registro). Si __PRETTY_FUNCTION__
no está definido, use la siguiente mejor opción y así sucesivamente. Sin embargo, las respuestas que obtuve me hicieron darme cuenta de que esto era imposible. Entonces, si __PRETTY_FUNCTION__
y todos estos otros no son macros, ¿qué son? ¿Y cómo puedo verificar si una determinada implementación tiene uno de ellos o no?
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
}
¿Cuál es el valor de '__PRETTY_FUNCTION__',' __FUNCTION__' y '__func__'? –
@Adrien: estas son macros predefinidas, pero no todas están implementadas para todos los compiladores. –
¿Hiciste esta función en un encabezado? Si el encabezado se incluye varias veces, el compilador puede quejarse de que encuentra la misma función más de una vez. – Patrick