gcc扩展宏技巧

2721阅读 0评论2011-12-06 datao0907
分类:C/C++

1.API过时后,抛出的警告宏:

__THROW __attribute_deprecated__

__THROW__宏定义如下:

  1. </usr/include/argp.h>
  2. #ifndef __THROW
  3.   #define __THROW
  4. #endif

  5. #ifndef __THROW
  6.   #ifndef __GNUC_PREREQ
  7.      #define __GNUC_PREREQ(maj,min) (0)
  8.   #endif
  9. #if defined __cplusplus && __GNUC_PREREQ(2,8)
  10.   #define __THROW     throw()
  11. #else
  12.   #define __THROW
  13. #endif
  14. #endif

从上面的定义可以看出,THROW宏在C语言中为空,现在来看__attribute_deprecated__宏定义:

  1. </usr/include/sys/cdefs.h>
  2. #if __GNU_PREREQ (3,2)
  3. #define __attribute_deprecated__ __attribute__((__deprecated__))
  4. #else
  5. #define __attribute_deprecated__
  6. #endif

  7. </usr/include/argp.h>
  8. #ifndef __attribute__
  9. #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT__ANSI__
  10. #define __attribute__(Spec)
  11. #endif

__attribute__,__deprecated__gcc的一个

更多的gcc有用扩展见:http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/

上一篇:google-perftools安装方法
下一篇:位操作源码分析