那么如果在C中调用C++代码,以及如何在C++中调用C的代码呢?
extern "C"表示编译生成的内部符号名使用C约定。
1. 如何在C++中调用C呢?
C++调用C,extern "C" 的作用是:让C++连接器找调用函数的符号时采用C的方式
本文开头提出的笔试题可以这样修改:
- /*=======sum.h=========*/
- #ifndef SUM_H #define SUM_H
- #include <stdio.h>
- int sum(int a,int b);
- #endif;
- /*=======sum.c=========*/
- #include "sum.h"
- int sum(int a,int b) {
- int c=a+b; return c;
- }
- /*====main.cpp======*/
- extern "C" {
- #include "sum.h" }
- void mian(){
- cout << sum(1,2)<<endl;
- }
执行成功
相信到这里差不多明白了
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 个无法解析的外部命令










