__FUNCTION__, __func__, __PRETTY_FUNCTION__

http://blog.csdn.net/linuxheik/article/details/7621155

Solaris下支持C99的__func__

gcc 支持 __FUNCTION__, __func__, __PRETTY_FUNCTION__

俺一般使用__FUNC__


#if defined (__GNUC__)
#  define __FUNC__     ((const char*) (__PRETTY_FUNCTION__))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 19901L
#  define __FUNC__     ((const char*) (__func__))
#else
#  define __FUNC__     ((const char*) (__FUNCTION__))
#endif

http://blog.csdn.net/fullsail/article/details/

有一次为了调试ACE的代码打开了ACE_TRACE的开关,除了对蜂拥而出的日志输出有印象外还对ACE的函数进出提示产生了好感。对于后台调试的时候,往往必须使用大量的日志跟踪。而简单的加入函数进出的功能是一个不错的选择。

稍稍看了一下ACE的实现,感觉效果一般,还要自己写跟踪的函数名称。也不是太爽。(ACE估计是苦于大家对C++标准的支持程度)。感觉了一下,其实函数的进出跟踪都可以使用一个结构的构造和析构函数跟踪,而函数的信息完全可以使用各种宏代替。而这些信息可以作为参数传递给这个结构。

 GCC实现了如下的函数宏

__func__   C99的标准,但是GCC只输出函数名称。不知道VC.NET 为啥不支持

__FUNCTION__  __func__

__PRETTY_FUNCTION__  非标准宏。这个宏比__FUNCTION__功能更强,  若用g++编译C++程序, __FUNCTION__只能输出类的成员名,不会输出类名;__PRETTY_FUNCTION__则会以 <return-type>  <class-name>::<member-function-name>(<parameters-list>) 的格式输出成员函数的详悉信息(只会输出parameters-list的形参类型而不会输出形参名).若用gcc编译C程序,__PRETTY_FUNCTION____FUNCTION__的功能相同.

VC.NET提供的函数宏为:

__FUNCTION__ 函数,提供类名和函数名称的输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值