【问题标题】:Getting the name of the current method in c++在 C++ 中获取当前方法的名称
【发布时间】:2010-09-19 20:21:33
【问题描述】:

是否有一种(标准化的)方法可以使用 c++ 获取当前方法的名称?

使用 GNU GCC,您可以通过使用宏 __FUNCTION____PRETTY_FUNCTION__(由 2 个下划线括起来)来做到这一点,但是,这当然是不可移植的。有没有办法在标准 c++ 中执行此操作或使其可移植?

【问题讨论】:

  • 您可以使用反斜杠转义下划线,以防止 Markdown 将它们弄乱...
  • 或者通过点击编辑器中的“代码”按钮,这是我在编辑时所做的。

标签: c++ introspection


【解决方案1】:

不,c++ 标准不支持。

【讨论】:

    【解决方案2】:

    __func__ 标识符是 C99 标准的一部分,在 C++0x 草案中。

    标识符 __func__ 由编译器隐式声明,就好像以下内容位于每个函数体的开头一样:

    static const char __func__[] = "function-name";
    

    其中function-name 是编译器自动提供的实现定义的字符串。

    在对这些标准的支持可用(或更广泛可用)之前,您会被编译器特定的垃圾所困扰。

    【讨论】:

      【解决方案3】:

      它被称为“内省”,在 c++ 标准中没有这样的东西。您应该使用外部库(我认为提升以某种方式支持它)。 但是请尝试弄清楚使用它的原因是否真的很好。

      【讨论】:

        【解决方案4】:

        不......但有些东西最终成为非标准标准!

        请参阅http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx,其中概述了 ANSI 标准内容,然后是包含 FUNCTION

        的 microsofs

        【讨论】:

          猜你喜欢
          • 2016-03-13
          • 2011-01-04
          • 1970-01-01
          • 2010-10-01
          • 2020-01-11
          • 1970-01-01
          • 1970-01-01
          • 2016-11-01
          • 2010-11-21
          相关资源
          最近更新 更多