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

eminemlhp 2008-12-16 09:22:56
如标题
...全文
271 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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文件也可以

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧