当前位置:   article > 正文

c++的extern “C“_在c++代码中调用c的库文件,需加上extern "c",用来告知编译器:这是一个用c写成的库

在c++代码中调用c的库文件,需加上extern "c",用来告知编译器:这是一个用c写成的库

extern "C"浅析

extern"C"是用于在c++中声明c函数的关键字。在c++中函数的名称会根据函数的参数类型和返回类型进行重载,而c函数的名称是通过链接器进行链接的。如果想要在c++中调用一个c函数,就需要使用 extern"C"来告诉编译器以c的方式链接函数。
当在c++中使用 extern"C"修饰一个函数时,编译器会对函数名进行特殊处理,以确保函数名在链接过程中保持与c语言兼容。这意味着c++编译器不会对函数名进行重载或修饰,而是按照c的命名约定来生成函数名。
使用 extern "C" 的主要场景是在c++代码中调用 C 语言编写的库函数。通过使用 extern "C",可以保证 c++代码正确地链接和调用c函数,避免由于函数名修饰导致的链接错误。
需要注意的是,extern "C" 只能用于全局函数和全局变量的声明,不能用于类成员函数。如果需要在 C++ 类中调用c函数,可以将c函数声明为静态成员函数,并在类外部添加 extern "C" 修饰符。
总结来说,extern "C" 是用于在c++中声明c函数,并告诉编译器以c的方式链接函数,以保证在c++代码中正确调用c函数。

代码示例

myadd.c

  1. int myadd(int a,int b)
  2. {
  3. return a + b;
  4. }

myadd.h

  1. #pragma once
  2. #if __cplusplus
  3. extern "C"{
  4. #endif
  5. int myadd(int a,int b);
  6. #ifdef __cplusplus
  7. }
  8. #endif

main.cpp

  1. #include <iostream>
  2. #include "myadd.h"
  3. using namespace std;
  4. int main()
  5. {
  6. cout << myadd(2,3) << endl;
  7. return 0;
  8. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/264363
推荐阅读
相关标签
  

闽ICP备14008679号