经常看到别人的头文件 有这样的代码

#ifdef __cplusplus
extern "C" {
#endif

// C 样式 的函数

#ifdef __cplusplus
}
#endif

为什么要这样呢?

因为 C 语言不支持重载函数 也就是同名函数,参数却不一样,C++支持,其编译器对函数名的处理方法不一样,导致 虽然都是C 样式的函数,不同编译器编译出来的不一样。

如果 是 C语言 编译的中间文件,要C++ 来调用,那么就需要这个 了,C++ 有了 extern "C" 就会按照 C 语言的方法进行函数命名。这样编译出来的中间文件 就是C 样式的函数名,C C++ 都可以调用。

如果 C++ 编译的中间文件,要C语言来调用,是不行的。

 

 

相关文章:

  • 2022-12-23
  • 2021-11-28
  • 2021-12-23
  • 2021-07-07
  • 2022-03-03
  • 2021-08-18
  • 2021-07-13
猜你喜欢
  • 2022-01-28
  • 2021-11-06
  • 2022-12-23
相关资源
相似解决方案