可用于打印方法名称的宏/关键字?

Not*_*ist 43 c c++

__FILE__并且__LINE__众所周知.__func__自C99以来有一个.

#include <iostream>
struct Foo {
        void Do(){ std::cout << __func__ << std::endl; }
};

int main()
{
        std::cout << __func__ << std::endl;
        Foo foo; foo.Do();
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

将输出

main
Do
Run Code Online (Sandbox Code Playgroud)

是否有任何输出方法名称的宏/关键字Foo::Do

Kor*_*icz 80

Boost有一个名为BOOST_CURRENT_FUNCTION的特殊实用程序宏,它隐藏了编译器实现之间的差异.

在它的实现之后,我们看到有几个宏取决于编译器:

  • __PRETTY_FUNCTION__ - GCC,MetroWerks,Digital Mars,ICC,MinGW
  • __FUNCSIG__ - MSVC
  • __FUNCTION__ - 英特尔和IBM
  • __FUNC__ - Borland
  • __func__ - ANSI C99

  • 还有一个选项:Q_FUNC_INFO 如果使用 Qt。 (2认同)

rpg*_*rpg 8

  • 在海湾合作委员会,你可以使用__FUNCTION____PRETTY_FUNCTION__.
  • 在MSVC上你可以使用__FUNCSIG____FUNCTION__.