【问题标题】:Is it ever possible to get the current (member) function name in C++?是否有可能在 C++ 中获取当前(成员)函数名?
【发布时间】:2012-01-07 13:04:39
【问题描述】:

我对 RTTI 了解不多,但我相信多亏了它,您可以在运行时检索变量的名称。 是否可以检索线程当前正在运行的函数的名称?

【问题讨论】:

  • 不,RTTI 不返回变量的名称,它允许您确定它们的类型
  • 好吧,我以为typeid(var).name 正在这样做,但显然它返回了变量类型的名称。
  • 你为什么会关心?
  • @FredOverflow:调试信息。

标签: c++


【解决方案1】:

针对当前函数的 C++11 标准化 __func__

各种编译器支持__FUNCTION____PRETTY_FUNCTION__ 等的变体。

【讨论】:

    【解决方案2】:

    如果你在做 GNU 兼容的东西,你可能想试试backtrace

    【讨论】:

    • 是的,但它与 GNU libc(或 Linux)的相关性比 C++ 或 g++ 特定。
    【解决方案3】:

    没有。

    C++ 的run-time type identification 允许您确定对象的类型,但不能确定您当前所在方法的名称。

    【讨论】:

      【解决方案4】:

      不,这是不可能的。 C++ 不支持反射(既不支持静态也不支持动态)(例如 C#)。你需要一些预处理器来模拟它。

      除此之外,在运行时不一定有函数/方法名称的概念(仅当您使用相应的标志编译源代码时才可用作调试信息)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-29
        • 1970-01-01
        • 2016-07-17
        • 2014-01-15
        • 2010-10-23
        • 2022-11-21
        相关资源
        最近更新 更多