QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1211|回复: 7

###怎样在任意函数体里写段代码打印出函数名?###

[复制链接]
发表于 2005-4-11 15:36:49 | 显示全部楼层 |阅读模式
[code:1]

void any_fn()
{
         //..................
        //一段可以打印出any_fn的代码
        //....................
}

main()
{
           any_fn();
}

[/code:1]

结果打印出any_fn的函数名.

这个要怎么实现呢?
发表于 2005-4-11 15:56:39 | 显示全部楼层

Re: ###怎样在任意函数体里写段代码打印出函数名?###

[quote:d63a4f5039="mozilla"][code:1]

void any_fn()
{
         //..................
        //一段可以打印出any_fn的代码
        //....................
}

main()
{
           any_fn();
}

[/code:1]

结果打印出any_fn的函数名.

这个要怎么实现呢?[/quote]

这个够变态,分析一下:
1,编译后函数名就不在是这个了,只是一个机器能懂的符号,所以,肯定要在编译之前预处理才行。

2,要预处理一定要使用宏。

3,如果一定要在函数体内(如上格式限定),我还没想出来。
回复

使用道具 举报

发表于 2005-4-11 22:06:06 | 显示全部楼层
看看 kdelibs 吧,里面实现了这个功能

kdebug.h 中
回复

使用道具 举报

发表于 2005-4-11 22:46:58 | 显示全部楼层
直接给出代码吧,哪个kdelibs不小啊!
回复

使用道具 举报

发表于 2005-4-12 10:15:59 | 显示全部楼层
感兴趣ing
回复

使用道具 举报

发表于 2005-4-12 10:51:00 | 显示全部楼层
目前gcc支持使用__func__(注意是小写)来获得函数名。但这不是标准c的,而且,据说不同版本的gcc在使用这个宏是有bug的。 :-(
回复

使用道具 举报

 楼主| 发表于 2005-4-12 12:20:33 | 显示全部楼层
我是因为这个
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=111784
才提这个问题的,直接帮我解决这个问题也行
回复

使用道具 举报

发表于 2005-4-13 00:01:31 | 显示全部楼层
you can browse kde souces online, if you prefer
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 07:27 , Processed in 0.079026 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表