C语言进阶笔记

本文介绍了C语言中的几个关键语法概念,包括typedef用于为类型创建别名,例如为变量、结构体、指针和数组重命名;static关键字的作用,如在函数或全局变量中的应用;volatile用于标记可能被外部改变的变量;回调函数和函数指针在处理事件和模块间通信中的使用;以及数字尾缀如U、L、F等表示不同类型的数值。此外,还提到了预编译指令#if__has_include()用于检查头文件是否存在。
摘要由CSDN通过智能技术生成

语法基础

关键字

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

这个预处理指令是用来检查某个头文件是否存在,如果存在则编译后续的代码,如果不存在则忽略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值