2008-10-29 11 views
13

¿Hay alguna manera (estandarizada) de obtener el nombre del método actual usando C++?Obteniendo el nombre del método actual en C++

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

+0

se puede escapar de los guiones usando barras invertidas para evitar rebajas arruinarla ... – Roddy

+0

O haciendo clic en el botón de "código" en el editor, que es lo que hice cuando lo edité. –

+0

Uso ['BOOST_CURRENT_FUNCTION'] (http://www.boost.org/doc/libs/1_36_0/libs/utility/current_function.html) – fizzer

Respuesta

26

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

El identificador __func__ se declara implícitamente por el compilador como si los siguientes eran al comienzo de cada cuerpo de la función:

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

donde function-name es una cadena definida por la implementación proporcionada automáticamente por el compilador.

Hasta que el soporte para esos estándares esté disponible (o más ampliamente disponible), está atrapado con suciedad específica del compilador.

0

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

0

Se llama "introspección" y no existe tal cosa en los estándares de C++. Deberías usar una biblioteca externa (impulso creo que lo soporta de alguna manera). Pero intente averiguar si el motivo para usarlo es realmente bueno.

+1

En otros idiomas, es útil para generar pruebas unitarias –

Cuestiones relacionadas