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

标签 c++ c

__FILE____LINE__ 是众所周知的。从 C99 开始有一个 __func__

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

int main()
{
        std::cout << __func__ << std::endl;
        Foo foo; foo.Do();
        return 0;
}

会输出

main
Do

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

最佳答案

Boost 有一个特殊的实用宏,称为 BOOST_CURRENT_FUNCTION这隐藏了编译器实现之间的差异。

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

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

关于c++ - 可用于打印方法名称的宏/关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2192680/

相关文章:

c++ - 使用 XNAMATH 优化堆栈分配的对象

c++ - C++ 中的继承和命名空间

c++ - 绕过错误 C2248 "cannot access protected member declared in class"的有效方法

c++ - 如何使 boost::lockfree::queue 动态调整大小

C linux 信号和函数

c++ - 将 std::tuple<T...> 转换为 T

c - 可调整大小的侧窗

c - 凌乱的代码从下一个元素中删除了第一位追加

c++ - 使用configure文件生成makefile

c - 在 C 中写入指针数组