免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2111 | 回复: 9
打印 上一主题 下一主题

[函数] 如何在函数实现 让他得到自己的名字? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-11 12:32 |只看该作者 |倒序浏览
void getname()
{
        ……
        printf("%s\n", self);//自己的名字,也就是说会打印出getname()
        printf("%s\n", parent);//调用getname的那个函数的名字
                             //举例,我是在main()中调用getname的,也就是说会打印出main()
                                            //举例,我是在test()中调用getname的,也就是说会打印出test()
        printf("%s\n", pparent);//同上一个差不多,只是父亲的父亲而已。
}

大侠们提供一种思路啊,有代码更好。

论坛徽章:
0
2 [报告]
发表于 2006-01-11 13:22 |只看该作者

impossible

源代码在编译之后是不存在字符名称的,编译之后名称都替换成相应的内在地址了.
所以你想在程序运行时打印出函数或者变量或者类名是不可能的事情.

论坛徽章:
0
3 [报告]
发表于 2006-01-11 14:08 |只看该作者
我知道你的意思
我想也不会那么绝对吧
宏呢?

论坛徽章:
0
4 [报告]
发表于 2006-01-11 14:14 |只看该作者
macro __FUNCTION__ , which was predefined by GCC, will work.

论坛徽章:
0
5 [报告]
发表于 2006-01-11 14:37 |只看该作者
函数:__FUNCTION__
类名:typeid(*this).name()
能够找到上级调用者的名字吗?

[ 本帖最后由 pinyin 于 2006-1-11 15:57 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-01-11 15:24 |只看该作者
不懂C++, 好象__PRETTY_FUNCTION__是用来处理C++的类成员函数的,具体你看gcc的info手册吧。

论坛徽章:
0
7 [报告]
发表于 2006-01-11 16:34 |只看该作者
__FUNCTION__可以做到

论坛徽章:
0
8 [报告]
发表于 2006-01-11 22:13 |只看该作者
backtrace()
backtrace_symbols()

论坛徽章:
0
9 [报告]
发表于 2006-01-21 20:52 |只看该作者
搞一个全局的链接名字

论坛徽章:
0
10 [报告]
发表于 2006-01-23 14:33 |只看该作者
有点不明白.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP