免费注册 查看新帖 |

Chinaunix

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

在被调函数中如何获取主调函数的名称? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-08 09:03 |只看该作者 |倒序浏览
  1. log(const char *error_level, const char *error_info)
复制代码


想写一个日志模块。在需要用日志的地方,直接调用  log().
在不用堆栈,不给log()传主调函数的名称的情况下,如何在log()内被获得调用log()函数的函数名?
曾试图用_FUNCTION_
但是发现这个和传函数名没什么区别。
我想直接在被调函数中获得主调函数的名称。



不知道各位有什么好办法?
谢谢

[ 本帖最后由 feiyinziiu 于 2009-11-8 09:10 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-11-08 09:24 |只看该作者
log实现成宏,还是用_FUNCTION_

不知道你说的“曾试图用_FUNCTION_, 但是发现这个和传函数名没什么区别”什么意思?

论坛徽章:
0
3 [报告]
发表于 2009-11-08 10:18 |只看该作者

回复 #2 snail_314 的帖子

我的意思是说。比如
fun1()
{
char *name=_FUNCTION_
....
....
log(error_leve, error_info,name)

}

最终我是把_FUNCTION_传入log()来获取fun1的名称,可不可以不直接传_FUNCTION_,
有什么办法啊?

论坛徽章:
0
4 [报告]
发表于 2009-11-08 10:22 |只看该作者
原帖由 snail_314 于 2009-11-8 09:24 发表
log实现成宏,还是用_FUNCTION_

不知道你说的“曾试图用_FUNCTION_, 但是发现这个和传函数名没什么区别”什么意思?



可不可以用一个全局变量char *fun_name
然后在主调函数中对name = _FUNCTION_,
然后在log()里面使用_FUNCTION_.
不知道各位还有什么其他方法?
谢谢

论坛徽章:
0
5 [报告]
发表于 2009-11-08 10:54 |只看该作者
log一定要实现成函数?实现成宏的话就可以直接在log里用__FUNCTION__,然后打印出func1的名字了,不用传一个参数啊

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
6 [报告]
发表于 2009-11-08 11:43 |只看该作者
printf("%s", __FUNCTION__);

论坛徽章:
0
7 [报告]
发表于 2009-11-08 11:58 |只看该作者
原帖由 snail_314 于 2009-11-8 10:54 发表
log一定要实现成函数?实现成宏的话就可以直接在log里用__FUNCTION__,然后打印出func1的名字了,不用传一个参数啊


感谢你的指导。
呵呵。以前只是听老师说过。很多高手些代码把一些程序或者函数可以用宏来代替来写。

我很想知道,写成函数和写成宏的区别是什么?

非常感谢。

论坛徽章:
0
8 [报告]
发表于 2009-11-08 12:28 |只看该作者

回复 #7 feiyinziiu 的帖子

宏只是做文本替换

宏是一种替换模型,函数是一种环境模型。

[ 本帖最后由 snail_314 于 2009-11-8 12:29 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-11-08 13:01 |只看该作者

回复 #8 snail_314 的帖子

懂了。非常感谢您。

论坛徽章:
0
10 [报告]
发表于 2009-11-08 14:43 |只看该作者

回复 #8 snail_314 的帖子

安装宏定义的特性,宏定义是不分配空间的,那么在宏定义里面,可不可以 定义变量呢?应为我涉及到文件的读写、获取当前时间、获取log文件大小,把这些信息一并写入文件。
要是能在里面定义buffer就跟好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP