21xrx.com
2024-09-19 10:00:30 Thursday
登录
文章检索 我的文章 写文章
C++如何获取函数名?
2023-07-13 14:02:39 深夜i     --     --
C++ 函数名 获取

在C++中,获取函数名并不像其他语言那样容易明显。因为在C++中函数名是被视为指针,而指针提供了一个低水平的接口,仅允许你访问存储在指针上的数据。

那么,如果我们想要获取函数名怎么办呢?

一种方法是使用预处理器宏__FUNCTION__。它会返回当前函数的名称作为一个字符串,可以用这个字符串实现一个日志框架来记录日志。

另一种方法是使用decltype关键字结合表达式和模板等高级功能。例如,这就是如何使用关键字decltype获得函数名称的示例:

template

struct function_name

{

  static std::string get()

  {

    static std::string name = [] {

      std::string str = __PRETTY_FUNCTION__;

      return str.substr(str.find_first_of('(') + 1);

    }();

    return name;

  }

};

使用时,只需在函数中调用function_name ::get()即可获得函数名称。

总的来说,获取C++函数名称并不是一件容易的事情,需要使用一些高级技术。但是通过使用预处理器宏和decltype等关键字,我们可以实现获取函数名称这样的任务。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复