C语言-程序环境和预处理(14.1)

news2024/11/29 8:49:13

目录

1. 程序的翻译环境和执行环境

2. 详解编译+链接

2.1 翻译环境

2.2 编译本身也分为几个阶段

2.2.1 预编译(预处理)

2.2.2 编译

2.2.3 汇编

2.2.4 链接

2.3 运行环境

写在最后:


 

1. 程序的翻译环境和执行环境

翻译环境:在这个环境中源代码被转换为可执行的机器指令。

执行环境:它用于实际执行代码。

2. 详解编译+链接

2.1 翻译环境

下图是程序编译的过程:

1.源文件通过编译转换成目标文件,

2.链接器将每个目标文件链接,形成一个可执行程序(exe后缀的文件),

3.链接器也引入该程序在C标准库应用的函数,以及程序员自己写的函数。

2.2 编译本身也分为几个阶段

2.2.1 预编译(预处理)

1. #include 头文件的包含,

2. #define 定义符号的替换,

3. 删除注释,

4. 文本操作。

2.2.2 编译

1. 把C语言代码翻译成了汇编代码:

包含:

语法分析

词法分析

语义分析

符号汇总

2.2.3 汇编

将汇编代码翻译成二进制的指令(存放到目标文件)

符号汇总后:形成符号表。

2.2.4 链接

1. 合并段表

2. 符号表的合并和重定位

最后形成可执行程序。

2.3 运行环境

1. 程序必须载入内存中,

如果是有操作系统的环境,工作由操作系统完成,

如果是独立的环境,也必须手工载入。

2. 程序开始,调用 main 函数。

3. 终止程序。正常终止main函数;也有可能是意外终止。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云借阅图书管理系统的测试项目实践

一、项目启动,介入了解需求二、需求分析三、制定测试方案(计划 策略)四、测试执行流程五、编写测试用例六、测试执行6.1 环境搭建6.2 准备工作6.3 执行6.4 缺陷管理七、输出测试报告八、版本发布九、项目总结一、项目启动,介入了…

CV【5】:Layer normalization

系列文章目录 Normalization 系列方法(一):CV【4】:Batch normalization Normalization 系列方法(二):CV【5】:Layer normalization 文章目录系列文章目录前言2. Layer normalizati…

【C++】多态详解

声明: 本节课件中的代码及解释都是在vs2013下的x86程序中,涉及的指针都是4bytes。如果要其他平台下,部分代码需要改动。比如:如果是x64程序,则需要考虑指针是8bytes问题等等 文章目录多态的概念多态的定义及实现多态的…

Javaweb之Http协议andTomcatandServelt的内容~

JavaWeb技术栈: B/S架构;Browser/server:浏览器/服务器架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端,浏览器只需要请求服务器,获取Web资源,服务器把Web资源发…

2023全球市场份额排名前五的浏览器,国产的为何没上榜

数据研究机构statcounter发布了PC端浏览器在2023年1月份的最新数据统计。Chrome浏览器凭借66.39%的全球份额稳居第一,Edge第二,Safari第三,Firefox第四,Opera第五。不难看出,在浏览器市场全球占有率排名前5中&#xff…

LeetCode 刷题系列 -- 304. 二维区域和检索 - 矩阵不可变

给定一个二维矩阵 matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的 左上角 为 (row1, col1) ,右下角 为 (row2, col2) 。实现 NumMatrix 类:NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初…

我去,竟可直接用命令行操作ChatGPT

ChatGPT 确实杀疯了,已经有 1亿 月活用户了,毕竟它真的有智能的样子。 我前些年还开发过智能客服系统,要是早点遇到 ChatGPT,估计可以省了不少事。 我想接下来有许多业务场景都会使用到它,比如教学,内容创…

OpenCV-PyQT项目实战(5)项目案例01图像模糊

欢迎关注『OpenCV-PyQT项目实战 Youcans』系列,持续更新中 OpenCV-PyQT项目实战(1)安装与环境配置 OpenCV-PyQT项目实战(2)QtDesigner 和 PyUIC 快速入门 OpenCV-PyQT项目实战(3)信号与槽机制 …

毫米波雷达人体存在感应营造更智能的生活

毫米波雷达人体存在感应的工作原理基于多普勒效应,精准度高、稳定性强,其可以穿透非金属物质,比如薄木板、衣服、塑料等物质。 科技改变生活,营造更智能化的生活,最重要的是能够对人体存在进行精准检测,人体…

Git多人协同远程开发

1. 李四(项目负责人)操作步骤 在github中创建远程版本库testgit将基础代码上传⾄testgit远程库远程库中基于main分⽀创建dev分⽀将 githubleaflife/testgit 共享给组员李四继续在基础代码上添加⾃⼰负责的模块内容 2. 张三、王五(组员&…

【树和二叉树】数据结构二叉树和树的概念认识

前言:在之前,我们已经把栈和队列的相关概念以及实现的方法进行了学习,今天我们将认识一个新的知识“树”!!! 目录1.树概念及结构1.1树的概念1.2树的结构1.3树的相关概念1.4 树的表示1.5 树在实际中的运用&a…

SpringBoot:拦截器,过滤器,打包与运行

目录 一、拦截器 1、创建实现类实现HandlerInterceptor 接口 2、注册拦截器对象 二、过滤器 拦截器与过滤器区别 三、打包运行windows版(jar包,war包) 1、打包为jar包 2、打包为 war包 一、拦截器 拦截器(Interceptor )是一种动态拦截…

二叉搜索树——BinarySearchTree

致前行的人: 要努力,但不要着急,繁花锦簇,硕果累累,都需要过程! 目录 1.二叉搜索树 1.1二叉搜索树概念 1.2二叉搜索树的操作 1.3二叉搜索树的实现 2.4二叉搜索树的应用 2.5二叉搜索树的性能分析 2.二…

不用U盘 重装系统(别再浪费钱去电脑城装系统了)

不用U盘 重装系统(别再浪费钱去电脑城装系统了) 首先打开浏览器,搜索MSDN回车,选择第一个网站 点击操作系统 往下拉找到win10专业版 选择(business editions)和 (x64) 打开迅雷,点击新建&a…

高德地图开发实战案例:使用Loca数据源展示海量点标注(海量点、自定义分类图标、聚合、信息提示、3D控件)

系列文章目录 高德地图开发实战案例:弧线连接线标注高德地图开发智慧社区网格化数据格式产生的无法单击事件的解决方案高德地图进阶开发实战案例(1):webAPI坐标转换和jsAPI批量转换高德地图进阶开发实战案例(2):电子围栏(多边形的绘制)的展示高德地图进…

与chatGPT的第一次亲密接触

最近,chatGPT火了,不管传统媒体,还是各种自媒体平台都在说它。今天我突然也想注册一个玩玩,注册前2步还行,但是等点开邮箱校验时,打开网页显示: 上网查了一下,没向中国开放服务&…

Java高手速成 | 对象-关系的映射、映射对象标识符与JPA API的级联操作

01、对象-关系的映射概念 Java对象和关系数据库存在一些简单的映射关系,比如Customer类与CUSTOMERS表映射,一个Customer对象与CUSTOMERS表中的一条记录映射,Customer类的name属性与CUSTOMERS表的NAME字段映射。 但是,毕竟对象模型…

有了独自开,一个人就是一个团队

文章目录 简单介绍优点 优秀案例平台福利总结 简单介绍 独自开是一个基于商品与服务交易全流程的PaaS开发平台。对于开发者,独自开可以协助开发者一个人独自开发一套系统。 优点 独自开有独创的分层标准化平台架构,可以满足系统的任何个性化需求。 …

PICT:一款功能强大的信息收集和事件响应工具

关于PICT PICT是一款功能强大的信息收集和事件响应工具,该工具可以帮助广大研究人员在受感染的终端节点中收集各种信息,以辅助进行网络安全事件应急响应。这些数据可能不够完整,但确实能够捕捉到很多有价值的取证信息。如果你想要获取完整的…

搜广推 隐语义模型(LMF)与矩阵分解(MF)

😄 MF的出现就是为了解决CF处理稀疏矩阵能力弱的问题,增强泛化能力。挖掘用户和物品的隐含兴趣和隐含特征。 ⭐ 在这里隐语义模型LMF在这里也就是利用MF对用户评分矩阵分解出来的用户隐向量矩阵、物品隐向量矩阵,然后基于这两个矩阵就可以计算得分,完成推荐任务。 🚀 MF…