Chinaunix

标题: 问一个C/C++函数的实现 [打印本页]

作者: mirnux    时间: 2006-12-13 17:25
标题: 问一个C/C++函数的实现
比如我想写两个程序,my_enter(),my_leave()
需要完成如下功能,比如我有一个函数为
122_abc()
{
    my_enter();

    my_leave();
}

运行结果为:
enter function 122_abc
leave function 122_abc

其实目的就是打印出当前调用my_enter和my_leave的函数名,用于调试用
想了一段时间,不知道如何实现,各位大侠有没有什么思路?
我编程经验少,如果此问题比较幼稚,大家见笑了
作者: soul_of_moon    时间: 2006-12-13 17:38
原帖由 mirnux 于 2006-12-13 17:25 发表
比如我想写两个程序,my_enter(),my_leave()
需要完成如下功能,比如我有一个函数为
122_abc()
{
    my_enter();

    my_leave();
}

运行结果为:
enter function 122_abc
leave function 122_abc

...

好像这个名字叫__FUNCTION__
作者: mirnux    时间: 2006-12-13 17:43
原帖由 soul_of_moon 于 2006-12-13 17:38 发表

好像这个名字叫__FUNCTION__

没看太懂,请明示,多谢。是说有系统自带有这么个__FUNCTION__函数可以实现这个功能么?
作者: 飞灰橙    时间: 2006-12-13 17:45
痛苦在于__FUNCTION__这东西并不兼容,
有的支持 __FUNCTION__
有的支持 __func__
有的支持 __PRETTY_FUNCTION__
作者: mirnux    时间: 2006-12-13 17:50
搜了一下,大致明白了
回家后试试

GNU CC 预定义了两个标志符保存当前函数的名字,__FUNCTION__ 保存函数在源码

中的名字,__PRETTY_FUNCTION__ 保存带语言特色的名字。在 C 函数中,这两个

名字是相同的,在 C++ 函数中,__PRETTY_FUNCTION__ 包括函数返回类型等额外

信息,Linux 内核只使用了 __FUNCTION__。

作者: mirnux    时间: 2006-12-13 17:54
在LinuxSir上找了篇好文章可以解决我的问题了,谢谢大家
有兴趣的可以看看
利用__FILE__, __LINE__, __FUNCTION__等宏跟踪调试程序的运行
http://www.linuxsir.org/bbs/showthread.php?t=233309




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2