这几天查编译问题时,在头文件中加入某些错误信息,却发现没有编译报错。想了一下可能是,还未进行到语法分析阶段。

这里再了解一下编译过程。

一般而言代码编译包含了四个阶段的处理,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking):

1、预处理:预处理的作用主要是读入源代码,处理预处理指令

预处理指令是以“#”开头的,预处理的处理对象主要包括以下方面:

  • #define    宏定义
  • 条件编译、头文件包含指令
  • #运算符    #运算符作用是把跟在其后的参数转换成一个字符串
  • ##运算符    ##运算符的作用用于把参数连接到一起
  • 特殊符号    __FILE__/__LINE__/__DATE__/__TIME__

2、编译:编译成汇编语言

(1)词法分析,

(2)语法分析

(3)语义分析

3、汇编:将上面的汇编指令编译生成目标文件

从 高级语言->汇编语言->机器语言(二进制)

4、链接:将程序的目标文件与所需要附加的目标文件链接起来,最终生成可执行文件。附加的目标文件也包括了所需要的库文件(静态链接库和动态链接库)

c编译步骤的更多相关文章

  1. Linux-编译器gcc/g++编译步骤

    gcc和g++现在是gnu中最主要和最流行的c&c++编译器.g++是c++的命令,以.cpp为主:对于c语言后缀名一般为.c,这时候命令换做gcc即可.编译器是根据gcc还是g++来确定是按 ...

  2. Android 源码编译 步骤

    添加资源后编译步骤 1:lunch 112:mmm frameworks/base/core/res/生成Install: out/target/product/hammerhead/system/f ...

  3. zlib库VS2015编译步骤

    [点击这里下载zlib1.2.8源码](http://zlib.net/zlib128.zip) [点击这里下载zlib1.2.8编译动态库](http://zlib.net/zlib128-dll. ...

  4. 腾讯开源项目phxpaxos的编译步骤

    #paxos的一般编译流程在项目文档<中文详细编译手册>里面已经有介绍,这里重点介绍一下编译samples目录下的代码: #我的环境是ubuntu; #设置paxos根目录 phx_dir ...

  5. Android APK反编译步骤

    反编译步骤 1.通过Android Killer 打开apk,自动开始分析   2.分析结束后,在分析好的工程上右键->打开方式->打开文件位置     在文件夹ProjectSrc中有文 ...

  6. R58的编译步骤f1选项v1.1版本

    R58的编译步骤f1选项v1.1版本 2017/3/16 16:38 请严重注意: 编译全志R58的Android6.0.1的系统和其它系统有两个不同: 1.在执行pack打包之前,必须执行verit ...

  7. OpenSSL简单介绍及在Windows、Linux、Mac系统上的编译步骤

    OpenSSL介绍:OpenSSL是一个强大的安全套接字层password库,囊括基本的password算法.经常使用的密钥和证书封装管理功能及SSL协议.并提供丰富的应用程序供測试或其他目的使用. ...

  8. webrtc所有平台下载编译步骤详细说明

    webrtc所有平台下载编译步骤详细说明 1.安装depot tools Windows:国外下载:https://storage.googleapis.com/chrome-infra/depot_ ...

  9. linux 模块编译步骤(原)

    linux 模块编译步骤(原) 博主推荐:<Linux命令模板Licote(原)> 本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者 ...

  10. Java native代码编译步骤简书

    Java native代码编译步骤简书 目的:防止java代码反编译获取密码算法 (1)编写实现类com.godlet.PasswordAuth.java (2)编译java代码javac Passw ...

随机推荐

  1. tornado之用户验证装饰器

    authenticated装饰器 为了使用Tornado的认证功能,我们需要对登录用户标记具体的处理函数.我们可以使用@tornado.web.authenticated装饰器完成它.当我们使用这个装 ...

  2. css解决内联元素间的空白间隔

    在内联元素的父级元素上设置font-size: 0px;即可.例如: <div class="wrap"> <ul> <li class=" ...

  3. 2018-2019 2 20175230《Java程序设计》第九周学习总结

    <Java程序设计>第九周学习总结 主要内容 MySQL数据库管理系统 1.下载 2.安装 启动MySQL数据库服务器 1.启动 2.root用户 MySQL客户端管理工具 建立连接 建立 ...

  4. python全栈开发中级班全程笔记(第二模块)第 二 部分:函数基础(重点)

    python学习笔记第二模块         第二部分    :    函数(重点) 一.函数的作用.定义 以及语法 1.函数的作用 2.函数的语法和定义 函数:来源于数学,但是在编程中,函数这个概念 ...

  5. 洛谷红名+AC150祭

    emmmm没什么想说的,随便放个图吧23333(逃~

  6. [Deep Learning] 正则化

    在总结正则化(Regularization)之前,我们先谈一谈正则化是什么,为什么要正则化. 个人认为正则化这个字眼有点太过抽象和宽泛,其实正则化的本质很简单,就是对某一问题加以先验的限制或约束以达到 ...

  7. 树莓派3B+ 安装系统

    安装概要步骤: 官网下载系统->刷入TF卡->设置开启显示器和SSH->通电->进入系统 1. 进入官方网站下载系统镜像 下载页面:https://www.raspberryp ...

  8. 解决系统中大量的TIME_WAIT连接

    今天发现网站特别卡!! 查看网络连接数: netstat -an |wc -l netstat -an |grep xx |wc -l        查看某个/特定ip的连接数 netstat -an ...

  9. Fastjson反序列化漏洞研究

    0x01 Brief Description java处理JSON数据有三个比较流行的类库,gson(google维护).jackson.以及今天的主角fastjson,fastjson是阿里巴巴一个 ...

  10. 20164305 徐广皓 Exp3 免杀原理与实践

    免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧 使用msf编码器生 ...