C语言四个处理步骤
- 预处理, 展开头文件/宏替换/去掉注释/条件编译 (test.i main .i)
- 编译, 检查语法,生成汇编 ( test.s main .s)
- 汇编, 汇编代码转换机器码 (test.o main.o)
- 链接 链接到一起生成可执行程序 a.out
预处理
1.宏定义; 2.文件包含; 3.条件编译。
预处理命令以符号“#”开头。
宏定义命令:#define、#undef,用来定义和解除宏。(值得注意的是还可以定义带参数的宏)
文件包含命令:#include “文件名” 或者 #include <文件名>。使用前者时会优先从当前目录查找头文件,使用后者时优先从默认的系统目录查找。
条件编译:#ifdef、#else、#endif、#elif 等。出于程序兼容性的考虑,有些语句希望在条件满足时才编译。这时候会用到条件编译的命令。
编译
编译阶段是检查语法,生成汇编,这个属于程序员的必备知识,我们学习一门语言第一步就是知晓语法,其中比较生涩的有左值右值,指针的使用,内存的管理,数据结构的使用,这将会是一场持久战 ,贯穿在整个学习生涯。
汇编
汇编代码转换机器码 这个阶段,非底层的程序员不需要考虑, 编译器不会搞错的。也与c/c++开发者无关,但是我们可以利用反汇编来调试代码,学习汇编语言依然是必备的。
链接
开头我引用一下百度百科的介绍
静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。
动态链接所调用的函数代码并没有被拷贝到应用程

本文详细介绍了C语言的四个处理步骤:预处理(宏定义、文件包含、条件编译)、编译(语法检查和汇编生成)、汇编(转换为机器码)以及链接(生成可执行程序)。预处理中的宏定义和条件编译对于程序的灵活性至关重要,编译阶段则涉及语法检查和程序员必须理解的基本概念。虽然汇编通常不需程序员直接处理,但了解其工作原理有助于调试。链接阶段将所有部分整合为最终的可执行文件,涉及静态库和动态库的概念,链接错误通常与库文件有关。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



