终于学到C++的课程,第一节课开始讲C与C++区别。今天才开始在优快云上写博客,希望以后能一直坚持下去。
C和C++的相互调用:
首先,为什么要实现C和C++的相互调用? 我们知道程序在链接的时候要生成符号和符号表,而C和C++的生成符号规则是不同的。C在生成符号时只跟函数名称有关系,而C++生成符号时既和函数名称有关,又和函数的参数列表有关。所以需要解决C和C++的调用问题。
我们都知道,C++是在C的拓展,是C的升华。简单地理解为C++是C的儿子,它继承了C的东西并在C的基础上作出了创新。但是C没有学到C++的东西,C还是那么古板。所以C和C++的相互调用,只能在C++的文件里使用extern“C”,C没有生成C++符号的办法。
总结之后得到3种情况:
1、自己写的(可读可写的文件)C调用C++:
在 .cpp文件中,写一个简单的Sum函数 ,使用extern“C” 在 .c文件中,写一个main函数,打印10和20的和
运行结果是30
如果不加extern"C",则会无法找到Sum函数
2、自己写的(可读可写的文件)C++调用C:
这种情况在.cpp文件中声明Sum函数时,加上extern“C“就可以。
.cpp文件 : .c文件 : 结果:
3、C和C++的混合调用:
上面的方法可以解决C调用C++,和C++调用C。C++调C很容易,但C调C++就比较麻烦。如果在工作中遇到混合编程,这时候我们引用一个中间层,让C既可以调C文件又可以调C++文件。
写一个midfile.h(中间文件) 给被调用的文件添加这个头文件,就可以实现C对C和C++的混合调用了
总结:C++是C衍生出来了的,所以调用的时候extern"C"只能在C++文件中使用。