目录
一、函数重载
1.1函数重载的概念
1.2 C++支持函数重载的原因
二、C/C++程序调用
2.1 静态库如何生成
2.2 C++程序调用C写的库
2.3 C程序调用C++写的库
听说30岁以后的人生很精彩~~
今天的内容来了,敲黑板,这可是重点!!!
自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词所要表达的真实意思,即该词被重载了。
下面举一个例子:
以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“ 谁也赢不了! ” ,后者是 “ 谁也赢不了!”在此没有冒犯的意思,还请大家见谅!
函数重载是函数中的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些个同名函数的形参列表(参数个数 或 类型 或 顺序)不同,常用来处理实现功能类似数据类型不同的问题。
下面给个示例:
1.参数个数不同
3.参数顺序不同
注意:返回值不同是不构成函数重载的
预处理阶段:头文件的展开、宏替换、条件编译、去掉注释;
编译阶段:语法检查、生成汇编代码;
汇编阶段:把汇编代码转换为二进制机器码;
连接阶段:合并断表、符号位的合并和重定位
在连接阶段,我们就将各种汇编好的代码进行链接。
连接时,面对函数,每个编译器都有自己的函数名修饰规则,C语言是通过函数名去进行找的(重载的函数名都一样)无法区分,而C++根据自己的函数名修饰规则,只要参数不同,修饰出来的名字就不一样,自然可以区分,支持函数重载。
这部分属于了解性的内容,不必太过注意细节,不要有太大压力。
C++程序调用C++写的库,C程序调用C写的库,这两种情况肯定是可以的。
那么C++程序调用C写的库呢?C程序调用C++写的库呢?
这两种情况都是可以的。
注意这里的库指的是静态库
最后点击 “ 应用 ” 即可。
1.将C程序写的库生成一个静态库,并记录此静态库的位置
2. 配置C++程序的属性
此处便是刚才存放静态库的地址
此处便是静态库的名称
3. 使用 extern "C"{ }
1.将C++程序写的库生成一个静态库,并记录此静态库的位置;
2. 配置C程序的属性;
注意:
C++是兼容C的,因此C++调用C的时候在C++程序那使用extern "C" 告诉C++按照C的规则对查找。
而在C调用C++时,C不知道C++的规则因此不能向上述那样,我们应该在将C++编译成静态库前对C++的函数进行如下操作,然后在进行编译。
今天的内容到此结束,我们学习了函数重载是什么、C++支持函数重载的原理,C/C++程序及静态库的相互调用。
才疏学浅,如果有什么问题的话还请大家评论指出,谢谢大家!!!