社区
C语言
帖子详情
通过函数指针获取函数名
shorerider77
2011-12-10 03:02:35
大家好,请问在C语言中有没有办法通过函数指针获取到函数名呢?或者说能否获得该函数的唯一标识符呢?请提供一下思路,我想了很久都没想出来。
说明一下:我现在只能得到这个函数的函数指针,平台是Linux,GCC编译器。
...全文
960
16
打赏
收藏
通过函数指针获取函数名
大家好,请问在C语言中有没有办法通过函数指针获取到函数名呢?或者说能否获得该函数的唯一标识符呢?请提供一下思路,我想了很久都没想出来。 说明一下:我现在只能得到这个函数的函数指针,平台是Linux,GCC编译器。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Vector_fz
2011-12-20
打赏
举报
回复
函数的指针就是函数的地址,而函数名则是函数的助记符
Vincent_Song
2011-12-20
打赏
举报
回复
呵呵,函数指针就是函数的地址,地址就是唯一标识!
shorerider77
2011-12-20
打赏
举报
回复
哎呀,前段时间忙起来都忘了这个贴了。我最后是把内存地址取出来作为其标识了。谢谢各位的回复。
bcypxl
2011-12-12
打赏
举报
回复
这个没法实现!
山中岁月
2011-12-12
打赏
举报
回复
如果是debug版的吧,感觉应该可以通过调试信息来获取函数名的,不过不知道怎么做
小时了了
2011-12-12
打赏
举报
回复
这样啊,那只能手工写一个指针到函数名的map,然后在调用函数指针的时候到map中查找函数名记录下来。
不过我很好奇楼主究竟要做什么,把你的原始需求说出来,大家也许可以帮到你
狂且
2011-12-10
打赏
举报
回复
地址, 地址, 地址
AnYidan
2011-12-10
打赏
举报
回复
[Quote=引用 1 楼 zshtang 的回复:]
不管是函数指针还是变量的指针,你都不可能通过指针获取原函数的名字或者变量的名字,因为那就是一个符号或者说标签而已,不会和内存中的变量内容有关联。
[/Quote]
++
shorerider77
2011-12-10
打赏
举报
回复
[Quote=引用 3 楼 xrunning 的回复:]
函数指针可以算作是唯一标志了,不会有重复。通过函数指针是拿不到函数名的,函数名只在编译时起作用编译后就不存在了。
[/Quote]
这个是倒没错,但是我是要记录下来的……所以麻烦
shorerider77
2011-12-10
打赏
举报
回复
[Quote=引用 5 楼 cao_julians 的回复:]
可以在被调用的函数中以字符串形式输出函数名
type functionName()
{
printf("%s",__func__);/*__func__是个标准宏,它给出当前函数名*/
}
[/Quote]
这正是麻烦的地方,我无法修改被调用函数,只有它的函数指针而已。
shorerider77
2011-12-10
打赏
举报
回复
[Quote=引用 4 楼 mougaidong 的回复:]
有函数指针了,还要函数名做什么?难道是给用户浏览使用嘛
[/Quote]
因为我是想要把程序运行过程中调用到的函数都记录下来,所以想找到这个函数的唯一标识,要能以文本形式来记录的东西。
cao_julians
2011-12-10
打赏
举报
回复
可以在被调用的函数中以字符串形式输出函数名
type functionName()
{
printf("%s",__func__);/*__func__是个标准宏,它给出当前函数名*/
}
turing-complete
2011-12-10
打赏
举报
回复
有函数指针了,还要函数名做什么?难道是给用户浏览使用嘛
小时了了
2011-12-10
打赏
举报
回复
函数指针可以算作是唯一标志了,不会有重复。通过函数指针是拿不到函数名的,函数名只在编译时起作用编译后就不存在了。
shorerider77
2011-12-10
打赏
举报
回复
[Quote=引用 1 楼 zshtang 的回复:]
不管是函数指针还是变量的指针,你都不可能通过指针获取原函数的名字或者变量的名字,因为那就是一个符号或者说标签而已,不会和内存中的变量内容有关联。
[/Quote]
那能不能得到这个函数的唯一标识呢,我是想把调用到的函数以文本形式记录下来。
21011111111
2011-12-10
打赏
举报
回复
不管是函数指针还是变量的指针,你都不可能通过指针获取原函数的名字或者变量的名字,因为那就是一个符号或者说标签而已,不会和内存中的变量内容有关联。
linux内核调试:通过
函数
指针
查找
函数
名
linux内核调试:通过
函数
指针
获取
函数
名
C语言根据
函数
指针
得到其
函数
名
前言 这次遇到的需求是需要知道
函数
指针
指向的
函数
的
名
称是什么。感觉是不是有点儿像java里的反射,可以知道运行时的类是啥。 解决方法 方法一:内核态、printk()
函数
如果是在内核态中,那么可以通过printk()
函数
来打印出
函数
名
。详情可以参考下网上的Blog。 方法二:创建
函数
指针
与
函数
名
对应的字典 ...
C语言通过
函数
指针
得到
函数
名
的代码
将做工程过程常用的一些代码段做个收藏,下边代码内容是关于C语言通过
函数
指针
得到
函数
名
的代码。 #include <stdio.h> #include <execinfo.h> void foo(void) { printf(“foon”); } backtrace_symbols_fd(&funptr, 1, 1); return 0; } ...
C中打印堆栈或者通过
函数
指针
获取
函数
名
c语言中如果需要打印
函数
堆栈或者根据
函数
指针
输出
函数
名
。 可以使用一下
函数
。 需要注意的一点就是,需要在链接时候增加-rdynamic的设置。 #include int backtrace(void **buffer, int size); char **backtrace_symbols(void *const *buff
C++使用switch动态
获取
函数
(通过
函数
指针
实现)
C++通过
函数
指针
使用switch语句实现动态
获取
函数
的功能
C语言
70,035
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章