全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++如何获取当前函数的名称?(预定义宏用法)

__func__ 是 C++11 引入的预定义标识符,用于获取当前函数未限定名,类型为 const char[],非宏、安全可靠,支持普通函数、成员函数及 C++23 起的 lambda。

在 C++ 中,可以使用预定义宏 __func__ 获取当前函数的名称,这是 C++11 标准引入的、最直接且可移植的方式。

使用 __func__ 获取函数名

__func__ 是一个隐式声明的静态局部常量字符串(类型为 const char[]),在每个函数作用域内自动存在,值为该函数的未限定名(即不带类名、命名空间或返回类型的纯函数名)。

  • 它不是宏,而是一个语言特性,因此不受宏展开顺序影响,更安全可靠
  • 适用于所有普通函数、成员函数、lambda(C++23 起支持 lambda 内的 __func__
  • 示例:void foo() { std::cout

兼容旧代码:__FUNCTION____PRETTY_FUNCTION__

这两个是常见编译器(GCC、Clang)扩展,非标准但广泛支持:

  • __FUNCTION__ 行为与 __func__ 基本一致,可看作其别名,但属于编译器扩展
  • __PRETTY_FUNCTION__ 提供更详细的签名信息(含返回类型、参数、类作用域等),适合调试输出
    例如在 class A { void bar(int x) {} } 中,__PRETTY_FUNCTION__ 可能输出 "void A::bar(int)"
  • 注意:__PRETTY_FUNCTION__ 在不同编译器中格式略有差异,不可用于解析逻辑

不能用 __FILE____LINE__ 替代函数名

__FILE____LINE__ 分别返回源文件路径和行号,它们与函数名无关。虽然组合使用可辅助定位(如日志中打印 __FILE__ ":" STRINGIFY(__LINE__) " in " __func__),但无法推导出函数名本身。

  • 试图通过宏拼接生成函数名(如 #define MY_FUNC __func__)是无效的——宏在定义时不捕获上下文
  • 运行时反射(如获取 mangled 名)需借助平台 ABI(如 abi::__cxa_demangle),复杂且非标准,不推荐仅为了函数名而使用

实际使用建议

  • 日常开发和日志中,优先使用 __func__ —— 标准、简洁、语义明确
  • 调试时若需完整签名,可临时用 __PRETTY_FUNCTION__,但避免写入稳定日志格式
  • 跨平台项目中不要依赖 __FUNCTION__,除非已做编译器检查并提供 fallback
  • 注意:__func__ 在内联函数中展开为被调用处的函数名(即实际内联位置的函数),不是调用者的函数名


# c++  # 作用域  # 常量  # 命名空间  # 成员函数  # 标识符  # const  # 字符串  # char  # void  # Lambda  # 行号  # 非标准  # 是一个  # 这是  # 适用于  # 这两个  # 不受  # 可以使用  # 不能用  # 不带 


相关文章: 如何通过多用户协作模板快速搭建高效企业网站?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  电商网站制作公司有哪些,1688网是什么意思?  定制建站流程步骤详解:一站式方案设计与开发指南  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  动图在线制作网站有哪些,滑动动图图集怎么做?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  网站制作报价单模板图片,小松挖机官方网站报价?  定制建站价位费用解析与套餐推荐全攻略  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何基于PHP生成高效IDC网络公司建站源码?  如何在阿里云ECS服务器部署织梦CMS网站?  北京制作网站的公司,北京铁路集团官方网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  建站之星×万网:智能建站系统+自助建站平台一键生成  内网网站制作软件,内网的网站如何发布到外网?  如何零基础在云服务器搭建WordPress站点?  如何快速重置建站主机并恢复默认配置?  建站之星后台管理系统如何操作?  建站上市公司网站建设方案与SEO优化服务定制指南  如何在阿里云部署织梦网站?  专业网站建设制作报价,网页设计制作要考什么证?  建站主机选购指南:核心配置与性价比推荐解析  建站之星展会模板:智能建站与自助搭建高效解决方案  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  建站主机如何选?高性价比方案全解析  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  表情包在线制作网站免费,表情包怎么弄?  jQuery 常见小例汇总  如何选择香港主机高效搭建外贸独立站?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  简单实现Android文件上传  如何在宝塔面板创建新站点?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何高效利用200m空间完成建站?  建站之星好吗?新手能否轻松上手建站?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  高防服务器:AI智能防御DDoS攻击与数据安全保障  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  大同网页,大同瑞慈医院官网?  小建面朝正北,A点实际方位是否存在偏差?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何通过WDCP绑定主域名及创建子域名站点?  油猴 教程,油猴搜脚本为什么会网页无法显示?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  安徽网站建设与外贸建站服务专业定制方案 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。