C和C++混合编程问题

2020-01-06 13:47:28王振洲

那么如果在C中调用C++代码,以及如何在C++中调用C的代码呢?

extern "C"表示编译生成的内部符号名使用C约定。

1. 如何在C++中调用C呢?

C++调用C,extern "C" 的作用是:让C++连接器找调用函数的符号时采用C的方式

本文开头提出的笔试题可以这样修改:

 

 
  1. /*=======sum.h=========*/   
  2. #ifndef SUM_H  #define SUM_H 
  3. #include <stdio.h>   
  4. int sum(int a,int b);   
  5.   #endif; 
  6.   /*=======sum.c=========*/ 
  7.   #include "sum.h" 
  8.    
  9. int sum(int a,int b)  { 
  10. int c=a+b;  return c; 
  11. }   
  12. /*====main.cpp======*/   
  13. extern "C"  { 
  14. #include "sum.h"  } 
  15.   void mian(){ 
  16.   cout << sum(1,2)<<endl; 
  17.   } 

执行成功

相信到这里差不多明白了

2. 怎样在C里调用C++呢?

在C中引用C++函数(C调用C++,使用extern "C"则是告诉编译器把cpp文件中extern "C"定义的函数依照C的方式来编译封装接口,当然接口函数里面的C++语法还是按C++方式编译)

执行:test1.obj : error LNK2019: 无法解析的外部符号 _sum,该符号在函数 _main 中被引用

E:ProgrammingGrapictestDebugtest.exe : fatal error LNK1120: 1 个无法解析的外部命令