__func__,__FUNCTION__,__PRETTY_FUNCTION__的区别

鲜为人知的C++黑科技【__PRETTY_FUNCTION__】非侵入式的编译期反射 【代码】鲜为人知的C++黑科技【__PRETTY_FUNCTION__】非侵入式的编译期反射。 阅读详情

 在C语言中,常用获取函数名成的方法都有__func__、__FUNCTION__、__PRETTY_FUNCTION__。那么它们的区别是什么呢?
  1) __func__、__FUNCTION__: 主要是获取函数的名称。
  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)
<Zhuuu_ZZ>HIVE(十一)函数 Hive内置函数一 Hive函数分类二 字符函数二 类型转换函数和数学函数三 日期函数四 集合函数五 条件函数六 聚合函数和表生成函数6.1 聚合函数6.2 表生成函数:输出可以作为表使用 一 Hive函数分类 从输入输出角度分类 标准函数:一行数据中的一列或多列为输入,结果为单一值 聚合函数:多行的零列到多列为输入,结果为单一值 表生成函数:零个或多个输入,结果为多列或多行 从实现方式分类 内置函数 自定义函数 UDF:自定义标准函数 UDAF:自定义聚合函数 UDTF:自定义表生成函数 阅读详情

相关推荐

跨平台开发中的__PRETTY_FUNCTION__与__FUNCSIG__:如何统一处理编译器差异

本文探讨了在跨平台C++开发中如何统一处理__PRETTY_FUNCTION__和__FUNCSIG__的编译器差异。通过分析GCC和MSVC的不同实现,提供了条件编译、格式化统一和现代C++封装等解决方案,帮助开发者实现日志输出的跨平台一致性,提升调试效率。

php55的博客 791

__func__标识符

__func__标识符  __func__是C99标准里面预定义标识符, 它是一个static const char[], 会在每一个使用__func__的函数里隐式定义.下面是ISO9899里的例子#include void myfunc(void){     printf("%s/n", __func__);     /* ... */}输出: myfunc 据我所知好像只

1万+

C++中跨平台调试宏__PRETTY_FUNCTION__与__FUNCSIG__的实战封装与应用

本文深入探讨了C++中跨平台调试宏__PRETTY_FUNCTION__与__FUNCSIG__的实战封装与应用。通过对比不同编译器的实现差异,提供了统一的封装方案,并详细介绍了在模板元编程、日志系统和性能优化中的高级应用场景。文章还涵盖了常见陷阱、最佳实践以及现代C++替代方案,为开发者提供了全面的调试宏使用指南。

weixin_30245867的博客 390

在C / C ++中,__FUNCTION__,__func__、__PRETTY_FUNCTION__和__FUNCSIG__的作用及区别

官方C99标准为此目的定义的__func__标识符,确实值得大家关注,然而,ISO C++却不完全支持所有的C99扩展,因此,大多数的编译器提供商都使用 __FUNCTION__ 取而代之,而 __FUNCTION__ 通常是一个定义为 __func__ 的宏,之所以使用这个名字,是因为它已受到了大多数的广泛支持。在最新的ISO C标准中,如大家所知的C99,加入了另一个有用的、类似宏的表达式__func__,其会报告未修饰过的(也就是未裁剪过的)、正在被访问的函数名。该宏用于获取当前函数的名称。

qq_27898413的博客 5084

C++(11):宏定义__func__和__VA_ARGS__

_func__会返回所在函数的函数名,__VA_ARGS__是变长参数的宏定义,是指在宏定义中参数列表的最后一个为省略号的参数。C语言在C99已经支持了__func__和__VA_ARGS__,C++11也将他们纳入了支持的预定义宏。

风静如云的博客 3223

workbench谐响应

定义材料 打开Engineering Data定义材料,在分析时不同部分选择不同材料 建模 打开Geometry建模,我举的例子很简单就一根光秃秃的轴 因为要加轴承,在轴上创建imprint face 因为要用point mass代替轴上原来的盘,在轴上盘的位置新建一个Plane,用Slice方法将轴从XYPlane3分成两段 施加边界条件以及谐响应分析 打开Model 1.在两段轴的交界面处,创建Point Mass,输入质量与转动惯量,位置在轴线上 2.mass point promote to.

my blogs include programming, math, physics.回首过去,放眼未来。 leslielee.blog.youkuaiyun.com 5883

__PRETTY_FUNCTION__

https://blog.youkuaiyun.com/nuoshueihe/article/details/8243963

ce123的技术博客 8232

模拟ic入门——设计一个单极运放(一)单级运算放大器设计基础

主要介绍了单级运放的基本理论和使用场景

qq_64956710的博客 3741

__FUNCTION__, __func__, __PRETTY_FUNCTION__

http://blog.youkuaiyun.com/linuxheik/article/details/7621155 Solaris下支持C99的__func__gcc 支持 __FUNCTION__, __func__, __PRETTY_FUNCTION__ 俺一般使用__FUNC__ #if defined (__GNUC__) # define __FUNC__ ((c

继续微笑lsj 2448

用Docker-Compose三节点部署生产级Doris集群:从配置文件到故障转移

本文详细介绍了如何使用Docker-Compose部署一个生产级的三节点Apache Doris集群。内容涵盖从核心架构理解、配置文件编写到集群初始化验证的全过程,并重点讲解了如何实现高可用、数据持久化、健康检查以及故障转移等生产级运维关键点,为中小团队提供了一种在容器化便利性与系统稳定性间取得平衡的可靠部署方案。

kkk56的博客 856

深入解析以太网接口中的BOB Smith电路设计

本文深入解析以太网接口中的BOB Smith电路设计,详细介绍了其在共模噪声抑制、浪涌防护和EMI优化中的关键作用。通过实际案例和设计要点,帮助工程师正确选择75Ω电阻和高压电容等元件,优化PCB布局,解决电压型与电流型PHY的设计差异,以及千兆与百兆以太网的特殊考量。

weixin_28339967的博客 687

__func__函数的使用

__func__是C99标准里面预定义标识符, 它是一个static const char[], 会在每一个使用__func__的函数里隐式定义. 下面是ISO9899里的例子 #include void myfunc(void) {      printf("%s/n", __func__);      /* ... */ } 输出: myfunc  据我所知好像只有GC

逐波与逆流 2万+

零代码做游戏:AI辅助开发HTML5网页小游戏从创意到发布全流程

在软件开发领域,自然语言编程正成为一种新兴的人机协作方式,而AI辅助开发则是其最典型的落地形态。它让开发者无需精通语法,只需用清晰的语言描述游戏规则与交互逻辑,AI便能自动生成可运行的代码。这种模式大幅降低了编程门槛,尤其适合快速验证创意、制作原型。对于HTML5网页游戏而言,借助AI生成单个HTML文件,配合在线运行环境,即可在浏览器中直接试玩、迭代与分享。无论是产品经理验证玩法、运营人员制作互动小游戏,还是教育者设计课堂闯关,都能通过自然语言描述需求,让AI完成代码实现与报错修复。本文完整记录了一个“接

weixin_31497453的博客 329

__PRETTY_FUNCTION__, __FUNCTION__, __func__

__PRETTY_FUNCTION__, __FUNCTION__, __func__这三者的区别是什么? http://stackoverflow.com/questions/4384765/whats-the-difference-between-pretty-function-function-func 转载于:https://www.cnblogs.com/cwgk/p/36488...

weixin_33859504的博客 504

蜗牛星际+OpenWrt实战:双网口变AP模式,让所有设备同网段互通

本文详细介绍了如何将蜗牛星际双网口小主机刷入OpenWrt系统,并将其配置为AP模式,实现与主路由同网段的无缝桥接。通过关闭DHCP、桥接物理网口等核心步骤,解决家庭网络设备割裂问题,让所有设备在同一局域网内高效互通,特别适合追求网络简洁和厌恶多级NAT的技术爱好者。

zero1的博客 960

Winform从入门到精通(2)——Button(史上最全)

本文介绍winform中Button控件的详细用法,包括所有属性和事件

qq_34059233的博客 1万+

Function Names as Strings,difference between _Function_ and _PRETTY_FUNCTION

GCC provides three magic variables that hold the name of the current function, as a string. The first of these is __func__, which is part of the C99 standard: The identifier __func__ is implicitly de

hj74535099的专栏 744

Arduino与Proteus仿真实例-LCD2004-I2C(PCF8574)驱动仿真

LCD2004-I2C(PCF8574)驱动仿真 PCF8574/74A 通过两线双向 I2C 总线(串行时钟 (SCL)、串行数据 (SDA))提供通用远程 I/O 扩展。 LCD2004,即2004字符型液晶显示器,是一种点阵模块,用于显示字母、数字、字符等。 它由 5x8 个点阵位置组成; 每个位置可以显示一个字符。 两个字符之间有一个点间距,行之间有一个空格,从而将字符和行分开。 模型 2004 表示它显示 4 行,每行 20 个字符。 在前面的实例中对PCF8574和LCD2004的已经做了详细介

视觉与物联智能 1165

【C/C++】C++库研究笔记——函数名的宏定义

原文地址: C++库研究笔记——函数名的宏定义 6.47 Function Names as Strings:http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html GCC provides three magic variables that hold the name of the current functi

fallenink的专栏 1495

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c/c++ 预处理宏

标准定义的预处理宏 macros meanings _FILE_ 打印出当前文件名 _LINE_ 打印出当前行号 _DATE_ 打印出当前年月日 _TIME_ 打印出今天时间 _STDC_ 使用ISO标准的编译器编译C文件的时候值为1,c++编译器处理时0 _STDC_VERSION_ 打印出C编译器的标准,C99 or C89 or C2011 _cplu...

我喜欢雨天的清新的博客 510

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

是一个非标准的宏,在C++98和C++03标准中被定义为预处理器扩展。例如,如果您有一个名为 MyClass::myFunction() 的成员函数,则。时,其类型因实现而异,通常为 const char* 或 const char[]。时,它与函数名称具有相同的类型,即 const char[]。综上所述,虽然这两个宏都可以用于获取当前函数的名称字符串,但。都是预定义的宏,用于在编译时获取当前函数的名称字符串。: 不仅能获取函数的名称,同样也能获取函数传递的参数。: 主要是获取函数的名称。

Friday 2829

__VA_ARGS__和va_start作用, 关于log

__VA_ARGS__ 是一个可变参数的宏,经常用来对系统的NSLog进行处理, 这个可变参数的宏是新的C99规范中新增的。 实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。 ##__VA_ARGS__ 宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错 一般这个用在调试信息上多一点 比如iOS上的DDLog框架就用了这个, ...

gcs的博客 1064

__PRETTY_FUNCTION_ 以及C++中调用C

linux@ubuntu:~/linux_c$ cat example.c  #include int main(void) { printf("hi main=%s %s\n",__FUNCTION__,__PRETTY_FUNCTION__); printf("hi main=%s %s\n",__FUNCTION__,__func__); return 0;

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 3623

__func__ 和 __FUNCTION__的区别

了解__func__和的区别,关键在于认清“标准”与“扩展”的关系。简单来说,__func__。下面这个表格能帮你快速把握它们的核心差异。__func__

撬动未来的支点的专栏 478
上一篇: PCL中的PointT类型
下一篇: PCL中的异常机制
一杯盐水
博客等级 码龄10年 62粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值