2011-05-27 10 views
6
#include <iostream> 
class A{ 
    public: 
    void myfunction(){ 
     std::cout << __func__; 
    } 
}; 
int main(){ 
    A obj; 
    obj.myfunction(); 
} 

La salida es myfunction. Desafortunadamente __funct__ no funciona. ¿Cómo se emite el nombre completo de la función miembro, es decir, A::myfunction?Visualización del nombre completo de la función

Respuesta

9

No existe una forma estándar definida para el mismo. Sin embargo, si está utilizando gcc, puede usar __PRETTY_FUNCTION__ en lugar de __func__.

Estándar C++ (es decir, C++ 03) no tiene ni __func__ ni __PRETTY_FUNCTION__.

C++ 0x deriva __func__ de C99 y se define en el punto 8.4.2/8 (n3290)

La variable predefinida-función local __func__ se define como si una definición de la forma

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

habían proporcionado, donde nombre-función es una cadena definida por la implementación

+0

Creo que '__PRETTY_FUNCTION__' pasa a ser estándar en C++ 0x? – Xeo

+1

@Xeo: No, no es así. :-) –

+0

Ah, ya veo, así que fue '__func__'. – Xeo

3

Como dice @Prasoon, no hay una forma estándar.
Para Visual Studio, __FUNCTION__ muestra el nombre completo.

+0

no estándar, pero Boost ofrece una macro multiplataforma: BOOST_CURRENT_FUNCTION, consulte http://www.boost.org/doc/libs/1_46_0/libs/utility/current_function.html –

Cuestiones relacionadas