不用指针,来实现一个固定大小的FIFO缓冲区
struct KEYBUF
{
unsigned char data[32];
int next_r; //下一个数据读取位置 即队首
int next_w; //下一个数据写入位置 即队尾
int len; //len表示缓冲区已记录的字节数
}
struct KEYBUF keybuf;
// 写入数据
if (keybuf.len < 32)
{
keybuf.data[keybuf.next_w] = data;
keybuf.len++;
keybuf.next_w++;
if (keybuf.next_w == 32)
{
keybuf.next_w = 0; //循环使用缓冲区
}
}
//读取数据
unsigned char i = keybuf.data[keybuf.next_r];
keybuf.len--;
keybuf.next_r++;
if (keybuf.next_r == 32)
{
keybuf.next_r = 0;
}
本文介绍了一种不使用指针实现固定大小的FIFO(先进先出)缓冲区的方法。通过定义结构体`KEYBUF`并使用整型变量追踪读写位置,实现了循环缓冲区的功能。该方法适用于内存有限的嵌入式系统。
1万+

被折叠的 条评论
为什么被折叠?



