在ANSI C的实现中,存在2种环境:翻译环境和运行环境。
在翻译环境下,程序的编译可以被分为编译和链接2个部分,其中编译还可以被分为预处理、编译、汇编。下图是程序的编译过程。
?
接下来再通过一张图去概括编译的4个阶段的具体内容。
?
预处理也被称为预编译。在预处理阶段,主要进行以下4个步骤
?
在这一阶段,主要将C语言代码翻译成汇编代码。除此之外还进行以下4个步骤:
?
运行环境也叫执行环境,也就是程序的执行过程。
?
?
函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数(C语言中不可以),这些函数的函数名必须相同,但是这些函数的形参列表 (参数个数、参数类型、参数顺序)必须有至少1个不同。例如:
void Func(int a, char b, double c)
{}
//参数个数不同
void Func(int a, char b)
{}
//参数类型不同
void Func(char a, char b, char c)
{}
//参数的顺序不同
void Func(int a, double c, char b)
{}
这是由于在链接期间,C++对函数的命名规则可以区分出函数重载的函数,但是C语言的命名规则不可以。
下图是程序在分别采用C语言的编译和C++的编译后的函数名的变化结果。我们可以看出C语言对于函数名没有做什么修改,C++则不同,C++的命名规则是:_Z是每个函数名前面都需要加的,然后Z后面的数字代表这个函数名中有几个字母,随后跟着的是函数名,函数名后面是每个参数的缩写,如:int --> i , char --> c , double --> d ,?int* --> pi等等。我们可以从C++的命名规则中分析出,在函数名相同的情况下,只要能够让每个函数在经过编译后产生的函数名不同,那么它们就是函数重载。因此影响函数重载的因素如下:
注意:函数的返回值是函数重载的必要不充分条件。即,函数重载的函数可以返回值不同,但是返回值不同的函数,不一定是函数重载。
为什么要写这篇文章 其实是因为最近学到了python的property装饰器的相关知识刚开...
近年来使用H5框架开发APP非常火爆前有mui框架后有uniapp这些框架使得我们开发app...
传染源:野生动物,可能为中华菊头蝠 病毒:新型冠状病毒 2019-nCoV 传播途径:经呼...
复制代码 代码如下: function keyPress(ev){ if(ev.keyCode==13){ //在光标所在...
1.初始的一个项目 点击右上角的AVD Manager 当然从欢迎页面也可以创建虚拟机 一...
数据库查询性能优化一直是程序员绕不开的话题,当我们遇到业务刷新报表缓慢或者...
动机: 为了方便用户查看大批量数据,我们会用到动态分页,因此分页功能是我们在...
我们知道,Win10 在推出之时,推出过为期一年的免费升级活动。只要你使用的是 Wi...
Servlet实现文件上传的三种方法总结 1. 通过getInputStream()取得上传文件。 /**...
复制代码 代码如下: ?xml version="1.0" encoding="utf-8"? s:MXDataGridItemRen...