社区
C语言
帖子详情
通过函数指针获取函数名
shorerider77
2011-12-10 03:02:35
大家好,请问在C语言中有没有办法通过函数指针获取到函数名呢?或者说能否获得该函数的唯一标识符呢?请提供一下思路,我想了很久都没想出来。
说明一下:我现在只能得到这个函数的函数指针,平台是Linux,GCC编译器。
...全文
993
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
打赏
举报
回复
不管是函数指针还是变量的指针,你都不可能通过指针获取原函数的名字或者变量的名字,因为那就是一个符号或者说标签而已,不会和内存中的变量内容有关联。
根据
函数
名
获取
函数
指针
实现注册机制。
通过这种方式,你可以将新的
函数
注册为 SQLite 的自定义 SQL
函数
,并且可以在 GDALDataset 的 executeSQL 方法中执行包含自定义 SQL
函数
的 SQL 语句。在 SQLite 中注册自定义
函数
时,需要提供一个指向 C
函数
的指针,并且 C++ 类成员
函数
有一个额外的隐藏参数 this 指针,因此直接将一个类注册为自定义 SQL
函数
是不可行的。三、进阶一下,注册新的
函数
到sqlite成为sql
函数
,能够通过gdaldataset的executeSQL方法执行sql。
linux
函数
地址
获取
函数
名
,
函数
名
/
函数
地址/
函数
指针
函数
指针
:1。指针变量 2。指针变量指向
函数
这正如用指针变量可指向整型变量、字符型、数组一样。在编译时,每一个
函数
都有一个入口地址,该入口地址就是
函数
指针
所指向的地址。可利用该指针变量调用
函数
,就如同用指针变量可引用其他类型变量一样,在这些概念上一致的。事实上,每一个
函数
,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于
函数
名
尽管
函数
不是变量,但它在内存中仍有其物理地址,该地址...
C中打印堆栈或者通过
函数
指针
获取
函数
名
c语言中如果需要打印
函数
堆栈或者根据
函数
指针
输出
函数
名
。 可以使用一下
函数
。 需要注意的一点就是,需要在链接时候增加-rdynamic的设置。 #include int backtrace(void **buffer, int size); char **backtrace_symbols(void *const *buff
C
函数
指针
Outline: 1. 如何从
函数
指针
获得
函数
名
? 2.
函数
指针
结构必须与
函数
同构。 3. 当
函数
指针
作为另一个
函数
的参数时,另一个
函数
的该参数不能简单的是指针参数,而应该是整个
函数
指针
定义。这样这个参数才能表面自己是个
函数
指针
,而不是其他普通指针。
函数
指针
可以使状态机编程变得简单,但是同时由于
函数
指针
并不是显示调用
函数
,在debug程序时可能会增加很多问题。 ...
根据
函数
指针
地址
获取
函数
名
man backtrace_symbols_fd,里面有对应的实例,或也可参考 http://blog.csdn.net/snow168rain/article/details/52043719, 其中关键为编译时要加参数-rdynamic
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章