您的位置:首页 > 编程语言 > C语言/C++

20170203C语言提升05_编译

2017-02-03 14:30 162 查看

1:编译概述:

编译的过程:

    1:编译器对代码的预处理:将空格,注释,条件编译指令,宏定义,#include等进行展开得到真实的代码。会生出 *.i 的文件。

    2:编译过程:语句分析(词法,语法,语义),代码优化,生成汇编代码。

    3:汇编器会讲所有的汇编代码生成机器码。

    4:链接:如果使用了库就会有链接过程,分为静态连接和动态连接。

2:预处理器:

    预处理的时候,编译器会分析里面的语句以及替换。经过与处理的时候会生成与处理文件(工程->属性->C/C++->预处理器->预处理到文件->设置为是)。设置后就可以生成与处理文件到文件里面。会生成 *.i 里面。这个文件会膨胀到很大(会把所有的库拷贝一份到文件)。

3:编译器:

    预处理之后,编译器会进行编译过程,他会对词法(命名是否合理等),语法(不符合语法规则就会报出语法错误),语义(编译器越来越强大,他会提示一些可能是错误的东西(比如if(num = 20))。)等进行一次检查。然后还会对代码进行优化。debug版本和release版本的优化。debug会生成比较容易调试的汇编语句。可能每一句C代码会生出多个汇编代码。而release版本可能会减省很多,体积很小,运行会更快。

4:汇编器及连接器:

    汇编器的作用就是  他会更具我们的汇编代码进行解释成机器码。相对来说更简单。

    链接:由链接器来完成,将外部的东西导入到当前的程序里面,导入完成后程序才可以运行。否则不可以运行。导入的方式分成两种:

        1:静态链接:我们的程序已经生成了自己的代码,链接器将外不要用的代码也导入进来链接到一起,生成一个程序(特点:完整,大)。

        2:动态链接:把导入的权限下放到操作系统,程序运行的时候操作系统随时给他导入需要的函数(特点:体积小,效率总会比静态链接低一点(有一个查找的过程))。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 编程