Pregunta

¿Hay una manera (estandarizada) de obtener el nombre del método actual usando c ++?

Usando GNU GCC puedes hacerlo usando la macro __FUNCTION__ y __PRETTY_FUNCTION__ (rodeado de 2 guiones bajos), sin embargo, esto no es portátil. ¿Hay alguna forma de hacerlo en c ++ estándar o una forma de hacerlo portátil?

¿Fue útil?

Solución

El identificador __func__ es parte del estándar C99 y está en el borrador de C ++ 0x.

El compilador declara implícitamente el identificador __func__ como si lo siguiente estuviera al comienzo de cada función:

static const char __func__[] = "function-name";

donde nombre-función es una cadena definida por la implementación que proporciona automáticamente el compilador.

Hasta que el soporte para esos estándares esté disponible (o más ampliamente disponible), te quedas atascado con el problema específico del compilador.

Otros consejos

No ...... ¡pero algunas cosas terminan siendo estándares no estándar!

vea http://msdn.microsoft.com /en-us/library/b0084kay(VS.80).aspx que describe las cosas estándar de ANSI y luego microsofs que incluye FUNCTION

No, no es compatible con el estándar de C ++.

Se llama " introspección " y no hay tal cosa en los estándares de c ++. Deberías usar una biblioteca externa (boost, creo que de alguna manera lo soporta). Pero intente averiguar si la razón para usarlo es realmente buena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top