c语言的编译步骤
预处理
带#的语句就是预处理指令,预处理指令在预处理的时候处理了
头文件展开:
#include <stdio.h>
包含文件stdio.h
(预处理时将stdio.h 文件拷贝至预处理文件中)删除注释: 注释有两种方法:
//
/* */
宏替换:
#define
代表是声明一个宏,在预处理时会将宏给替代
(预处理的时候就会替换)预处理时 不会检查语法错误
条件编译: 条件不成立:
#if 0 -> #endif
条件成立#if 1 -> #endif
- c语言中
0表示不成立
1表示成立
- c语言中
宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
编译
- 将预处理文件编译生成汇编文件 检查语法错误
- 检查语法,将预处理后文件编译生成汇编文件
汇编
链接
- 设置运行环境,堆栈等,链接其他库
- C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去
选项 | 含义 |
---|---|
-E | 只进行预处理 |
-S(大写) | 只进行预处理和编译 |
-c(小写) | 只进行预处理、编译和汇编 |
-o file | 指定生成的输出文件名为 file |
文件后缀 | 含义 |
---|---|
.c | C 语言文件 |
.i | 预处理后的 C 语言文件 |
.s | 编译后的汇编文件 |
.o | 编译后的目标文件 |
一步编译
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZkeqのCoding日志!
评论
ArtalkGiscus