说明一下:我现在只能得到这个函数的函数指针,平台是Linux,GCC编译器。
16 个解决方案
#1
不管是函数指针还是变量的指针,你都不可能通过指针获取原函数的名字或者变量的名字,因为那就是一个符号或者说标签而已,不会和内存中的变量内容有关联。
#2
那能不能得到这个函数的唯一标识呢,我是想把调用到的函数以文本形式记录下来。
#3
函数指针可以算作是唯一标志了,不会有重复。通过函数指针是拿不到函数名的,函数名只在编译时起作用编译后就不存在了。
#4
有函数指针了,还要函数名做什么?难道是给用户浏览使用嘛
#5
可以在被调用的函数中以字符串形式输出函数名
type functionName()
{
printf("%s",__func__);/*__func__是个标准宏,它给出当前函数名*/
}
type functionName()
{
printf("%s",__func__);/*__func__是个标准宏,它给出当前函数名*/
}
#6
因为我是想要把程序运行过程中调用到的函数都记录下来,所以想找到这个函数的唯一标识,要能以文本形式来记录的东西。
#7
这正是麻烦的地方,我无法修改被调用函数,只有它的函数指针而已。
#8
这个是倒没错,但是我是要记录下来的……所以麻烦
#9
++
#10
地址, 地址, 地址
#11
这样啊,那只能手工写一个指针到函数名的map,然后在调用函数指针的时候到map中查找函数名记录下来。
不过我很好奇楼主究竟要做什么,把你的原始需求说出来,大家也许可以帮到你
不过我很好奇楼主究竟要做什么,把你的原始需求说出来,大家也许可以帮到你
#12
如果是debug版的吧,感觉应该可以通过调试信息来获取函数名的,不过不知道怎么做
#13
这个没法实现!
#14
哎呀,前段时间忙起来都忘了这个贴了。我最后是把内存地址取出来作为其标识了。谢谢各位的回复。
#15
呵呵,函数指针就是函数的地址,地址就是唯一标识!
#16
函数的指针就是函数的地址,而函数名则是函数的助记符
#1
不管是函数指针还是变量的指针,你都不可能通过指针获取原函数的名字或者变量的名字,因为那就是一个符号或者说标签而已,不会和内存中的变量内容有关联。
#2
那能不能得到这个函数的唯一标识呢,我是想把调用到的函数以文本形式记录下来。
#3
函数指针可以算作是唯一标志了,不会有重复。通过函数指针是拿不到函数名的,函数名只在编译时起作用编译后就不存在了。
#4
有函数指针了,还要函数名做什么?难道是给用户浏览使用嘛
#5
可以在被调用的函数中以字符串形式输出函数名
type functionName()
{
printf("%s",__func__);/*__func__是个标准宏,它给出当前函数名*/
}
type functionName()
{
printf("%s",__func__);/*__func__是个标准宏,它给出当前函数名*/
}
#6
因为我是想要把程序运行过程中调用到的函数都记录下来,所以想找到这个函数的唯一标识,要能以文本形式来记录的东西。
#7
这正是麻烦的地方,我无法修改被调用函数,只有它的函数指针而已。
#8
这个是倒没错,但是我是要记录下来的……所以麻烦
#9
++
#10
地址, 地址, 地址
#11
这样啊,那只能手工写一个指针到函数名的map,然后在调用函数指针的时候到map中查找函数名记录下来。
不过我很好奇楼主究竟要做什么,把你的原始需求说出来,大家也许可以帮到你
不过我很好奇楼主究竟要做什么,把你的原始需求说出来,大家也许可以帮到你
#12
如果是debug版的吧,感觉应该可以通过调试信息来获取函数名的,不过不知道怎么做
#13
这个没法实现!
#14
哎呀,前段时间忙起来都忘了这个贴了。我最后是把内存地址取出来作为其标识了。谢谢各位的回复。
#15
呵呵,函数指针就是函数的地址,地址就是唯一标识!
#16
函数的指针就是函数的地址,而函数名则是函数的助记符