c语言编译四步骤
预处理 : gcc -E hello.c -> hello.i
- 头文件展开:#include <stdio.h> :预处理时将stdio.h拷贝过来
- 带#号的命令就是预处理指令
- 删除注释:注释的两个方法: //和/**/
- 宏定义的替换:#define PI 3.14:定义了一个宏PI和3.14等价,当我们预处理的时候会将PI替换成为3.14
- 需要注意的地方是我们不可以将3.14后面加上;因为做的是一种等价的替换
- 在预处理的过程中并不会检查语法错误
- 条件编译:#if 0 -> #endif(条件不成立);#if 1 -> #endif(条件不成立)
编译 :gcc -S hello.i -> hello.s
- 编译会检查语法错误;
- 将预处理文件编译生成为汇编文件
汇编 :gcc -c hello.s -> hello.o
- 将汇编文件编译为二进制文件
链接 :gcc hello.o -> hello.exe
- 设置运行环境,堆栈等,链接其他库
Helloworld程序分析
1 | //预处理指令,在预编译时处理 |
system 库函数
- 作用:在程序中启动另一个程序
- 参数:待启动程序的路径名
- 如果这个程序系统可以找到不用加路径
- window路径以\来表示或者连个 \ \
1 |
|
寄存器缓存和cpu之间的关系
- 缓存事实上和内存相似,只是距离cpu比较近且速度要比内存快的多
- cpu -> 寄存器 -> 缓存 -> 内存
调试
- 设置断点,使程序暂停
- 比较重要的:监视器,内存,自动窗口
vs中出现4996
- 只需要加上
- #define _CRT_SECURE_NO_WARNINGS
- #pragma warning(disable:4996)
- 移动我们需要的语句只需要使用alt加上方向键