Chinaunix首页 | 论坛 | 博客
  • 博客访问: 234205
  • 博文数量: 95
  • 博客积分: 400
  • 博客等级: 一等列兵
  • 技术积分: 906
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 16:04
个人简介

人生意义在于积累,而不是日复一日的重复

文章分类

全部博文(95)

文章存档

2016年(2)

2015年(44)

2014年(35)

2011年(5)

2010年(9)

我的朋友

分类: C/C++

2015-10-23 11:54:26

1.    __func__
    输出函数名称,这是C99标准。
    
    GCC的声明方法为:
        static const char __func__[] = "function_name";

2.    __FUNCTION__
    与__func__相同,早期GCC只能识别这个宏定义,但并没有标化,因此为了考虑到移值性,建议使用__func__。
    
    为了向前兼容,可能进行如下预处理:

点击(此处)折叠或打开

  1. #if __STDC_VERSION__ < 199901L
  2.   #if __GNUC__ >= 2
  3.     #define __func__ __FUNCTION__
  4.   #else
  5.     #define __func__ ""
  6.   #endif
  7. #endif
3.    __PRETTY_FUNCTION__
    在C中,__PRETTY_FUNCTION__与__func__相同。
    在C++中,__PRETTY_FUNCTION__会同时包含函数所属的类及函数名称。

注:上述这些标识并非预处理宏。GCC3.3及之前,C语言中,__FUNCTION__与__PRETTY_FUNCTION__做为字符串来对待,可用于初始化字符数组,并且可以与其他字符串进行连接。GCC3.4及后,它们被做为变量来对待,与__func__类似。而在C++中,__FUNCTION__和__PRETTY_FUNCTION__始终被看成变量来使用。
阅读(1874) | 评论(0) | 转发(0) |
0

上一篇:学习感想

下一篇:C/C++宏:标准预定义宏

给主人留下些什么吧!~~