C++学习笔记 extern C

来源:互联网 发布:科目四考试软件 编辑:程序博客网 时间:2024/06/06 06:44

C++头文件中的extern “C”的作用,一般都是如下形式

#ifdef __cplusplusextern "C" {#endif  /* __cplusplus */中间还有很多其他的#ifdef __cplusplus}#endif  /* __cplusplus */

首先要清楚的是 extern “C”是只有C++编译器才理解的东西,C的编译器会报错的。C++编译器添加这个的目的是为了让c的代码和c++代码能更好的一起工作。
因为编译之后函数的名字都是存放在符号表中的,而且C和C++为函数命名的方式是不同的,如下例

void foo( int x, int y );c编译后函数名字:_fooc++编译后名字:_foo_int_int

c++这种方式叫做mangled name,是将函数参数类型加了进来,用以支持重载, 如果用 extern “C”包围的话,C++在编译是就会使用C的函数命名方法来命名

参考: 这篇文章

0 0