我想在每次调用时输出函数名称,我可以轻松地复制并粘贴函数名称,但是我想知道是否有一个快捷方式可以帮我完成工作?
我正在做的那一刻:
SlideInfoHeader* lynxThreeFile::readSlideInfoHeader(QDataStream & in)
{
qDebug("lynxThreeFile::readSlideInfoHeader");
}
但我想要的是通用的东西:
SlideInfoHeader* lynxThreeFile::readSlideInfoHeader(QDataStream & in)
{
qDebug(this.className() + "::" + this.functionName());
}
答案 0 :(得分:27)
__FUNCTION__
”,并且应该为您提供所需的信息。
答案 1 :(得分:13)
我从您的示例中看到您正在使用Qt。在这种情况下,最好的办法是使用Q_FUNC_INFO
中的<QGlobal>
。这是描述:
扩展为描述。的字符串 函数宏驻留在。如何 这个字符串看起来更具体 编译器依赖。有了GNU GCC,它就是 通常是功能签名, 与其他编译器一样,它可能是 行号和列号。
答案 2 :(得分:8)
如果您使用的是gcc,您可以根据自己的喜好找到__PRETTY_FUNCTION__
。
答案 3 :(得分:5)
如果你查看了boost,那么可以跨平台移植一个宏BOOST_CURRENT_FUNCTION。在C99标准中,存在具有期望效果的编译器变量__func__
。我相信已被C ++ 0x标准所接受。合理数量的编译器已经支持这一点。
答案 4 :(得分:5)
__func__
是c99(这反过来意味着它可能不适用于visual studio - 但它是标准的:o))
__FUNCTION__
几乎无处不在
__PRETTY_FUNCTION__
是特定于gnu并返回完整限定名称(名称空间?),classname,returntype,functionname,parameterslist