嵌入式C语言提高——篇1 C语言常用关键字及运算符操作
目录
前言
记录嵌入式C语言相关知识点的重新学习,篇1包括关键字、运算符及逻辑操作。
1、C语言的编译过程
预处理——编译——汇编——链接
预处理:去掉注释、加载头文件、替换宏定义,预处理不会进行语法检查
define 和 include 不是关键字。关键字在编译的时候去处理的,define是在预处理时就处理完了,不是关键字。
2、C语言常见报错
预处理错误——not find
编译错误——语法
链接错误——原材料不够,或者多了(函数声明,且调用了,不能只声明)
3、预处理的使用——技巧性的运用
#define 宏名 宏体
条件预处理
#if #else #endif
预定义宏
FUNCTION 函数名
LINE 行号
FILE 文件名
4、条件预处理举例
代码:
调试版本
发行版本
通过条件预处理设置一个DEBUG关键字,可以方便地在一套代码里面维护两个版本
5、宏展开下的#、##
使用在宏体中
#字符串化
##连接符号
6、C语言常用关键字及运算法操作
When how why
常用关键字的应用场景、使用技巧
掌握位运算的典型操作
嵌入式里面最小单位8bit char ,所以需要进行位操作
关键字:
数据类型(char/int/long/short/unsigned/signed/float/double/void)、自定义数据类型(struct/union/enum/typedef)、逻辑结构、类型修饰符、杂项(return/sizeof)
sizeof():编译器给我们查看内存空间容量的一个关键字
return
开发板裸机开发的时候不用调用printf函数,这个函数在头文件stdio.h里面,盖头文件依赖于操作系统
7、数据类型
C操作对象:资源、内存(内存类型的资源,LCD资源、LED灯)
int a
sizeof(a) 不一定是4,因为int的大小根据编译器来定的,不同位数的机器不同。但是常规定义下int就是4字节
char
硬件芯片操作的最小单位: bit 高/低
软件操作的最小单位:char a (一组比特)
char a = 300;//溢出了
int
int大小根据编译器来决定的,不同位数的处理器int的大小不同,一般32位机器int大小都是4Byte
int 4B
long short
300l
Long 8B
unsigned /signed
无符号 数据
有符号 数字(加减乘除)
内存空间的最高位是符号位还是数据
右移位运算 >>
float/double
float 4B
double 8B
默认double
8f
void
8、自定义数据类型
struct
元素之间的和 累加
struct mystruct{
unsigned int a;
unsigned int b;
}; //定义类型
struct mystruct mybuff; //声明结构体变量
union
重叠,公用起始地址(技巧性代码)
union myunion{
Char a;
Int b;
}
enum (enumerate 枚举)
被命名的整形常数的集合
默认第一个为零
typedef
数据类型的别名
9、逻辑结构
if-else
switch(整形数字)
do while for
for:次数
while:条件
goto:只要用在同一函数中跳
10、类型修饰符
资源属性中位置的限定
auto-分配的内存默认可读可写
区域如果再{ },分配在栈里面
register-限制变量定义在寄存器上的修饰符
定义一些快速访问的变量(访问频率高的)
&这个取地址符号对register不起作用
static-静态
修饰3中数据:
(1)函数内部的变量
(2)函数外部的变量
(3)函数
extern-外部声明
const-常量的定义
只读的变量(可以通过指针修改)
volatile-告知编译器编译方法的关键字,不优化编译
修饰变量的值修改,不仅仅通过软件,也可能通过其他方式(硬件外部用户)
11、运算符
|| 和 & 有截断性,不能交换变量顺序
!逻辑取反
位运算
左移:乘法(乘以2)
按位异或
交换数据
按位取反
(与逻辑取反区别)