C语言之编译
编译过程
define include 不是关键字,他们在预编译的时候就被替代了。
常见编译错误
- 预处理错误
#include”file.h“ 默认先从当前路径中寻找,找不到再从系统环境中查找。
#include<file.h> 直接从系统环境中寻找
NOT FIND 注意自己创建用双引号。
解决方法:可以通过相对路径;通过写入头文件路径的方式。
2. 链接错误
原材料不够或者溢出。
- 缺少原材料
- 原材料溢出
原因是链接重复的函数。
预处理的使用
- #include 包含头文件
- #define 宏,替换 预处理时不进行检查直接进行替换,在编译时才进行检查
- #define 宏名 宏体 为了避免错误,加括号
1 | //错误例子 |
- 系统预定义宏
5. 条件宏变量
多用于控制不同版本的变量。(开发版与测试版)
同时可以通过命令来进行控制宏变量。
1 | gcc -D: |
6. 宏展开下的 #、##
数据类型
注意数据类型所占位数,防止溢出
1 | 8bit = 1B |
int大小的定义
编译器最优的处理大小(由编译器决定):
系统一个周期,所能接受的最大处理单位,int
32位系统,单词执行32bit,所以int大小32bit=4byte
单片机中存在16位系统,则int = 2B
signed与unsigned的注意
signed包含符号位,而unsigned不包含,所以进行位操作的时候会出现不同情况。
1 | -1=0xff |
类型修饰符
由于寄存器没有地址,所以对存入寄存器的值进行取址是无效的。
volatile 关键字
硬件中乘除法需要注意
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 吾辈之人,自当自强不息!!
评论