美文网首页C++面试题集C++
C/C++程序处理步骤

C/C++程序处理步骤

作者: saviochen | 来源:发表于2017-08-06 21:46 被阅读55次

一、C语言编译主要分为四个阶段

1.预处理

此阶段主要完成#符号后面的各项内容到源文件的替换,往往一些莫名其妙的错误都是出现在头文件中的,要在工程中注意积累一些错误知识。

  • (1)、#ifdef等内容,完成条件编译内容的替换
  • (2)、#include中内容,在当前目录或者指定目录,或者默认目录搜索头文件,并将头文件拷贝到源文件中。
  • (3)、#define的内容,替换define的内容(包括上一步的头文件中的define内容)此阶段产生[.i]文件。
2.编译

此阶段完成语法和语义分析,然后生成中间代码,此中间代码是汇编代码,但是还不可执行,gcc编译的中间文件是[.s]文件。
在此阶段会出现各种语法和语义错误,特别要小心未定义的行为,这往往是致命的错误。
第一个阶段和第二个阶段由编译器完成。

3.汇编

此阶段主要完成将汇编代码翻译成机器码指令,并将这些指令打包形成可重定位的目标文件,[.O]文件,是二进制文件。
此阶段由汇编器完成。

4.链接

此阶段完成文件中调用的各种函数跟静态库和动态库的连接,并将它们一起打包合并形成目标文件,即可执行文件。此阶段由链接器完成。
gcc编译C语言主要用到以下几个程序:C编译器gcc、汇编器as、链接器ld和二进制转换工具objcopy。

二、编译分为哪些阶段?

编译过程分为分析和综合两个部分,并进一步划分为词法分析、语法分析、 语义分析、 代码优化、存储分配和代码生成等六个相继的逻辑步骤。

这六个步骤只表示编译程序各部分之间的逻辑联系,而不是时间关系。编译过程既可以按照这六个逻辑步骤顺序地执行,也可以按照平行互锁方式去执行。在确定编译程序的具体结构时,常常分若干遍实现。对于源程序或中间语言程序,从头到尾扫视一次并实现所规定的工作称作一遍。每一遍可以完成一个或相连几个逻辑步骤的工作。例如,可以把词法分析作为第一遍;语法分析和语义分析作为第二遍;代码优化和存储分配作为第三遍;代码生成作为第四遍。反之,为了适应较小的存储空间或提高目标程序质量,也可以把一个逻辑步骤的工作分为几遍去执行。例如,代码优化可划分为代码优化准备工作和实际代码优化两遍进行。

相关文章

  • C/C++程序处理步骤

    一、C语言编译主要分为四个阶段 1.预处理 此阶段主要完成#符号后面的各项内容到源文件的替换,往往一些莫名其妙的错...

  • MinGW在Windows的使用

    安装MinGW之后,我们可以那它来作为C或C++的编译器 CMD编译程序 编译过程分为四个步骤:预处理、编译、汇编...

  • Android NDK来发之旅24--C++--异常处理

    Android NDK开发之旅 目录 C++ 异常处理 异常是程序在执行期间产生的问题。C++ 异常是指在程序运行...

  • 第一个跑在linux上的c++程序

    IDE的Xcode步骤 首先编写了第一个C++程序,Hello,world!C++程序的编译过程 第一步:新建一个...

  • nginx - fastCGI module

    1、【cgi】处理http请求的c/c++服务器程序 1. cgi程序处理客户端的http请求响应数据 [图片上传...

  • 多年程序员推荐:学习C语言的书籍有哪些?

    c++程序设计教程 c++编程思想 c++大学教程 c++程序设计语言 数据结构算法与应用c++语言描述 c++标...

  • C++详解预处理

    C/C++编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进...

  • C++ 学习笔记

    第一章 计算机与C++编程简介 C++程序6个阶段编程 ->预处理->编译->连接->装入->执行1.程序在编译器...

  • C++ 异常处理

    原文地址:C++ 异常处理 异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除...

  • 重新认识C++

    C++ 程序的生命周期 编码、预处理、编译和运行 在编译的过程中,编译器还会根据 C++ 语言规则检查程序的语法、...

网友评论

    本文标题:C/C++程序处理步骤

    本文链接:https://www.haomeiwen.com/subject/qspnlxtx.html