当前位置: 首页 > news >正文

【C++】如何获取当前正在运行的函数的名称?

funcFUNCTION、__PRETTY_FUNCTION__的区别

常用获取函数名成的方法都有__func__、FUNCTIONPRETTY_FUNCTION。那么它们的区别是什么呢?
  1) funcFUNCTION: 主要是获取函数的名称。
  2) PRETTY_FUNCTION: 不仅能获取函数的名称,同样也能获取函数传递的参数。

#include <iostream>using namespace std;
int test_fun(int a, int b){cout << "__func__: " << __func__ << endl;cout << "__FUNCTION__: " << __FUNCTION__ << endl;cout << "__PRETTY_FUNTION__: " << __PRETTY_FUNCTION__ << endl;return 0;
}int main(int argc, char** argv){test_fun(1, 1);return 0;
}result:
__func__: test_fun
__FUNCTION__: test_fun
__PRETTY_FUNTION__: int test_fun(int, int)

func、__FUNCTION__的区别?

FUNCTIONfunc 都是预定义的宏,用于在编译时获取当前函数的名称字符串。

但是它们之间存在一些区别:

FUNCTION 是一个非标准的宏,在C++98和C++03标准中被定义为预处理器扩展。在C99和C11标准中,它已被删除。而 func 是标准 C 和 C++ 的宏,从C99/C++98开始引入。

FUNCTION 会返回包含类作用域的完整函数名,而 func 只返回函数名。例如,如果您有一个名为 MyClass::myFunction() 的成员函数,则 FUNCTION 将返回 “MyClass::myFunction”,而 func 将仅返回 “myFunction”。

在函数原型或函数定义中使用 func 时,它与函数名称具有相同的类型,即 const char[]。但是,在使用 FUNCTION 时,其类型因实现而异,通常为 const char* 或 const char[]。

综上所述,虽然这两个宏都可以用于获取当前函数的名称字符串,但 func 更好地符合标准,并且更简洁和易于使用。

http://www.lryc.cn/news/59175.html

相关文章:

  • 42.原型对象 prototype
  • python 读写txt方法
  • 香橙派pi5下,debian,docker19.03.9版本runc容器逃逸
  • Thinkphp6.0中间件.上
  • 十进制到八进制的转换
  • 【从零开始学Skynet】基础篇(四):网络模块常用API
  • 怎么免费制作logo?logo免费设计在线生成,从此设计不求人
  • 【目标检测】目标检测遇上知识图谱:Object detection meets knowledge graphs论文解读与复现
  • IDEA重复下载SNAPSHOT包问题
  • 【Unity入门】12.MonoBehaviour事件函数
  • 1.3 Docker Compose-详细介绍
  • 数据分析:麦当劳食品营养数据探索并可视化
  • ES6标准
  • ASP一个物流商品运输系统的设计与实现
  • 肖 sir_就业课__009ui自动化讲解
  • 「线性DP」花店橱窗
  • 数组的去重方法
  • ESP32-LORA通信
  • 博客首页效果
  • 【LeetCode】剑指 Offer(29)
  • 自然语言处理(八):Lexical Semantics
  • 推荐一款 AI 脑图软件,助你神速提高知识体系搭建
  • 掌握这些“学习方法和工具”,让你事半功倍!
  • MyBatis 源码解析 面试题总结
  • 「业务架构」需求工程—需求规范(第3部分)
  • chapter-1数据管理技术的发展
  • 23.Spring练习(spring、springMVC)
  • 【数据库原理 • 七】数据库并发控制
  • 内部人员或给企业造成毁灭性损失
  • 【技巧】Word“只读方式”的设置与取消