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

news/2025/2/28 12:33:11/

目录

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.ppmy.cn/news/23261.html

相关文章

程序逻辑控制

文章目录 顺序结构分支结构循环结构输入输出猜数字一、顺序结构 所谓顺序结构就是程序一步一步的往下执行。 public class 顺序结构 {public static void main(String[] args) {System.out.println("Hello");System.out.println("World");System.out.pri…

【深度学习】Stable Diffusion AI 绘画项目搭建详解,并运行案例

文章目录前言1.安装环境1.1 基础环境1.2 权重文件2.牛刀小试2.1 用法在这里3.封装api总结前言 先把人家的git放过来:https://github.com/CompVis/stable-diffusion 40.7k 的stars, flask 和 django 两个web框架也不过如此数量级吧。 就是给一段文字&…

FMC DA子卡设计方案原理图:FMCJ465-2路 16bit 12.6GSPS FMC DA子卡

FMCJ465-2路 16bit 12.6GSPS FMC DA子卡 一、板卡概述: FMCJ465是一款转换速率最高为12.6GSPS 的 DAC 回放板,DAC位数16bit; 板卡基于ADI的AD9172系列DAC设计;板卡支持2路可配置的触发输出/触发输入;DAC的时钟支持内部参考时钟、外部参考时钟、外部…

(考研湖科大教书匠计算机网络)第三章数据链路层-第九节:以太网交换机自学习和转发帧的流程

获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:自学习算法流程演示(1)情况1(2)情况2(3)情况3(4)情况…

Vue2学习笔记

Vue2笔记 Vue 在组件实例上暴露的内置 API 使用 $ 作为前缀。它同时也为内部属性保留 _ 前缀。因此,你应该避免在顶层 data 上使用任何以这些字符作前缀的属性。 Vue 自动为 methods 中的方法绑定了永远指向组件实例的 this。这确保了方法在作为事件监听器或回调函…

计算机网络-网络层

文章目录前言概述IP地址划分分类IP地址IP 地址与硬件地址划分子网和构造超网总结前言 本博客仅做学习笔记,如有侵权,联系后即刻更改 科普: 参考网址 概述 因特网设计理念 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服…

向量的点积与叉积

1. 向量的点积 点积是指两个维度相同的向量相乘,结果是对应坐标配对的乘积之和: eg: [12]∙[12]11237\left[\begin{array}{l} 1 \\ 2 \end{array}\right] \bullet\left[\begin{array}{l} 1 \\ 2 \end{array}\right]1 \times 12 \times 37[12​]∙[12​]11237 留意…

跨域小样本系列1:简介篇

来源:投稿 作者:橡皮 编辑:学姐 跨域小样本系列1:简介√ 跨域小样本系列2:常用数据集与任务设定详解 跨域小样本系列3:元学习方法解决CDFSL以及两篇SOTA论文讲解 跨域小样本系列4:finetune方…