语法基础
关键字
static
volatile
typedef
作用:为一个类型重新定义一个新名字,这个类型可以是C语言常用的类型,也可以是结构体,指针,数组,函数等。
写法:typedef 原类型 新类型名字
例
1.给常用变量重新起名字
typedef unsigned char Byte;
Byte a,b;
2.给结构体重新起名字
结构体apple的名字可以省略。
typedef struct apple{
int weight;
int shape;
}AppleType;
AppleType apple1;
3.给指针起名字
typedef char* pStr1;
pStr1 s1,s2;
4.给数组起名字
Line类型即代表了具有81个元素的字符数组,使用方法如下:
typedef char Line[81];
Line text;
注意如果定义一个数组的指针,代表是二维数组
typedef char (* ptrchar)[81];
char str[3][81];
ptrchar str1;
str1 =str;
5 给函数起名字
typedef int (*PTR_TO_FUN) (int,int);
PTR_TO_FUN fun1;
给函数起名字就是方便函数的移植,不同的硬件有不同的驱动,但是顶层的函数名可以共用。
函数也可以做为参数在函数中调用。
typedef void (*SerialWrite)(uint8_t *p_ucData, uint32_t uiLen);
int32_t WitSerialWriteRegister(SerialWrite Write_func)
{
if(!Write_func)return WIT_HAL_INVAL;
p_WitSerialWriteFunc = Write_func;
return WIT_HAL_OK;
}
int32_t WitSerialWriteRegister(SerialWrite Write_func)
{
if(!Write_func)return WIT_HAL_INVAL;
p_WitSerialWriteFunc = Write_func;
return WIT_HAL_OK;
}
参考:http://c.biancheng.net/view/2040.html
weak
回调函数
函数指针
其他
数字尾缀
U表示该常数用无符号整型方式存储,相当于 unsigned int,例:
#define ADC_TEMPSENSOR_DELAY_US 10U
L表示该常数用长整型方式存储,相当于 long
F表示该常数用浮点方式存储,相当于 float
数值后面加“”H“、“h”的意义是该数值是用16进制表示的。
数值后面加“”B“、“b”的意义是该数值是用2进制表示的。
数值前面加“0”的意义是该数值是八进制。
数值前面加“0x”的意义是该数值是十六进制。
算法
预编译
#if __has_include()
#if __has_include ("esp_lcd_touch.h")
#include "esp_lcd_touch.h"
#endif
这个预处理指令是用来检查某个头文件是否存在,如果存在则编译后续的代码,如果不存在则忽略