• 全部
  • 问答

请教强人!!!在技术上有没有可能性——通过函数指针打印出其指向的函数的名称?

eminemlhp 2008-12-16 09:22:56
如标题
...全文
180 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
eminemlhp 2008-12-16
那如果我允许GNU扩展C语法也算上的呢,还是没有办法的吗,比如什么宏什么的?能不能往那方面想想,宏是可以实现很多匪夷所思的功能的!
回复
waizqfor 2008-12-16
[Quote=引用 8 楼 lann64 的回复:]
先得搞清楚,变量名、函数名都是给人看的。计算机可不看这个,计算机只看地址。所以编译器要把这些名称都转换成地址。
等编译好后的执行程序里所有名称都转换成地址了。

通过指针取函数名,实际上你是想在运行期得到函数名,那除非你程序里有意把名称保存起来(象使用__FUNCTION__,让预处理程序保存函数名),否则运行时根本就没有函数名了,也就无从谈取得了。
[/Quote]
LS说的有道理 LZ借鉴一下吧
回复
waizqfor 2008-12-16
[Quote=引用 8 楼 lann64 的回复:]
先得搞清楚,变量名、函数名都是给人看的。计算机可不看这个,计算机只看地址。所以编译器要把这些名称都转换成地址。
等编译好后的执行程序里所有名称都转换成地址了。

通过指针取函数名,实际上你是想在运行期得到函数名,那除非你程序里有意把名称保存起来(象使用__FUNCTION__,让预处理程序保存函数名),否则运行时根本就没有函数名了,也就无从谈取得了。
[/Quote]
LS说的有道理 LZ借鉴一下吧
回复
lann64 2008-12-16
先得搞清楚,变量名、函数名都是给人看的。计算机可不看这个,计算机只看地址。所以编译器要把这些名称都转换成地址。
等编译好后的执行程序里所有名称都转换成地址了。

通过指针取函数名,实际上你是想在运行期得到函数名,那除非你程序里有意把名称保存起来(象使用__FUNCTION__,让预处理程序保存函数名),否则运行时根本就没有函数名了,也就无从谈取得了。
回复
wyswyg63 2008-12-16
mark
回复
llaaddoo 2008-12-16
需要有.pdb之类的debug信息文件~~
微软好像提供了解析函数~~可以通过指针获得从debug信息文件里获得你要的信息~~
回复
nullah 2008-12-16
MARK
=大牛来~~~~
回复
机智的呆呆 2008-12-16
貌似不可以,函数指针只是携带一个地址值和函数类型信息~~~~
好像boost有反射功能的库吧,期待高手~~~
回复
xtting_8984313 2008-12-16
[Quote=引用 1 楼 llaaddoo 的回复:]
编译时带了debug信息的可以~~或则有map文件也可以
[/Quote]

感觉就算debug,貌似symbom都是保存在.pdb之类的文件里面吧,好像不好取出。
能有具体的实现方法吗?
回复
xtting_8984313 2008-12-16
应该不能,在编译的时候就已经不存在函数名了啊。
如果想知道调用的函数名称,可以尝试编译器宏__FUNCTION__
回复
llaaddoo 2008-12-16
编译时带了debug信息的可以~~或则有map文件也可以
回复
相关推荐
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-12-16 09:22
社区公告
暂无公告