代码改变世界

__BEGIN_DECLS __END_DECLS

2015-02-14 17:44  youxin  阅读(975)  评论(0编辑  收藏  举报
http://hi.baidu.com/xiaoxiaolq/blog/item/1edc2af30dd4915a342acc5e.html
__BEGIN_DECLS 和 __END_DECLS 的理解

在C语言代码中头文件中,充斥着下面的代码片段:(sys/cdefs.h)

 

  1. __BEGIN_DECLS
  2. .....
  3. .....
  4. __END_DECLS

 

  1. #if defined(__cplusplus)
  2.        #define __BEGIN_DECLS extern "C" {
  3.        #define __END_DECLS }
  4.        #else
  5.        #define __BEGIN_DECLS
  6.        #define __END_DECLS
  7. #endif

扩充C语言在编译的时候按照C++编译器进行统一处理,使得C++代码能够调用C编译生成的中间代码。

由于C语言的头文件可能被不同类型的编译器读取,因此写C语言的头文件必须慎重。