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

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

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函数;也有可能是意外终止。


写在最后:

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


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


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


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


相关文章
|
1月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
1月前
|
编译器 C语言
C语言--预处理详解(1)
【10月更文挑战第3天】
|
1月前
|
编译器 Linux C语言
C语言--预处理详解(3)
【10月更文挑战第3天】
|
22天前
|
C语言
【c语言】你绝对没见过的预处理技巧
本文介绍了C语言中预处理(预编译)的相关知识和指令,包括预定义符号、`#define`定义常量和宏、宏与函数的对比、`#`和`##`操作符、`#undef`撤销宏定义、条件编译以及头文件的包含方式。通过具体示例详细解释了各指令的使用方法和注意事项,帮助读者更好地理解和应用预处理技术。
23 2
|
1月前
|
C语言
C语言--预处理详解(2)
【10月更文挑战第3天】
|
1月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
1月前
|
编译器 C语言
C语言预处理详解
C语言预处理详解
|
1月前
|
Linux C语言 iOS开发
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
20 0
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3