1. __func__
输出函数名称,这是C99标准。
GCC的声明方法为:
static const char __func__[] = "function_name";
2. __FUNCTION__
与__func__相同,早期GCC只能识别这个宏定义,但并没有标化,因此为了考虑到移值性,建议使用__func__。
为了向前兼容,可能进行如下预处理:
-
#if __STDC_VERSION__ < 199901L
-
#if __GNUC__ >= 2
-
#define __func__ __FUNCTION__
-
#else
-
#define __func__ ""
-
#endif
-
#endif
3. __PRETTY_FUNCTION__
在C中,__PRETTY_FUNCTION__与__func__相同。
在C++中,__PRETTY_FUNCTION__会同时包含函数所属的类及函数名称。
注:上述这些标识并非预处理宏。GCC3.3及之前,C语言中,
__FUNCTION__与__PRETTY_FUNCTION__做为字符串来对待,可用于初始化字符数组,并且可以与其他字符串进行连接。GCC3.4及后,它们被做为变量来对待,与__func__类似。而在C++中,__FUNCTION__和__PRETTY_FUNCTION__始终被看成变量来使用。
阅读(1923) | 评论(0) | 转发(0) |