如何在调试字符串的函数中获取函数名称?

Phi*_*ent 19 c++ debugging qt

我想在每次调用时输出函数名称,我可以轻松地复制并粘贴函数名称,但是我想知道是否有一个快捷方式可以帮我完成这项工作?

目前我正在做的事情:

SlideInfoHeader* lynxThreeFile::readSlideInfoHeader(QDataStream & in)
{
    qDebug("lynxThreeFile::readSlideInfoHeader");
} 
Run Code Online (Sandbox Code Playgroud)

但我想要的是通用的东西:

SlideInfoHeader* lynxThreeFile::readSlideInfoHeader(QDataStream & in)
{
    qDebug(this.className() + "::" + this.functionName());
}
Run Code Online (Sandbox Code Playgroud)

Tor*_*ing 27

__FUNCTION__MSVC和GCC都支持" ",并且应该为您提供所需的信息.


Eva*_*ran 13

我从你的例子中看到你正在使用Qt.在这种情况下,你最好的选择是使用Q_FUNC_INFO找到的<QGlobal>.这是描述:

扩展为描述宏所在函数的字符串.此字符串看起来更具体如何取决于编译器.对于GNU GCC,它通常是函数签名,而对于其他编译器,它可能是行号和列号.


Mar*_*gel 8

如果您使用的是gcc,您可以__PRETTY_FUNCTION__根据自己的喜好找到更多.


Mat*_*ice 5

如果你检查了boost,那么可以跨平台移植一个宏BOOST_CURRENT_FUNCTION.在C99标准中,有一个__func__具有所需效果的编译器变量.我相信已被C++ 0x标准所接受.合理数量的编译器已经支持这一点.


Ron*_*del 5

__func__ 是c99(这反过来意味着它可能不适用于Visual Studio,但它是标准的:o))

__FUNCTION__ 几乎在任何地方都可以工作

__PRETTY_FUNCTION__ 是gnu特定的,并返回带有(名称空间?),类名,返回类型,函数名,参数列表的全限定名称