对__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语言的头文件必须慎重。


你可能感兴趣的:(对__BEGIN_DECLS 和 __END_DECLS 的理解)