硬汉嵌入式论坛

 找回密码
 立即注册
查看: 886|回复: 6
收起左侧

[其它] 开源超高效率数据结构Quene,宏定义写法,相信你一定能用的到。

[复制链接]

8

主题

26

回帖

55

积分

初级会员

积分
55
发表于 2021-12-30 16:32:25 | 显示全部楼层 |阅读模式
//============================
//Queue containers
//Design Date : 2021 - 8 - 21
//Designer : Tengye
//============================

#ifndef    __cQueue_H
#define    __cQueue_H

#if 1// data type example

typedef unsigned char  QUEUEDATATYPE;
#define MAXSIZE 128

typedef struct
{
        QUEUEDATATYPE data[MAXSIZE + 1];
        int front;
        int rear;
        int size;

}tyu8Queue, *mtyu8Queue;

#endif

#define InitQueue(queue){\
queue.front = queue.rear=0;\
queue.size = sizeof(queue.data)/sizeof(queue.data[0]);\
}

#define PushQueue(queue,item){\
if( (queue.rear +1)%queue.size==queue.front)\
{\
}else\
{\
queue.data[queue.rear]= item;\
queue.rear = (queue.rear+1)%queue.size;\
}}

#define PopQueue(queue,item){\
if(queue.rear == queue.front)\
{\
}else\
{\
item= queue.data[queue.front];\
queue.front = (queue.front+1)%queue.size;\
}}

#define FrontQueue(queue,item){\
if(queue.rear == queue.front)\
{\
}else\
{\
item= queue.data[queue.front];\
}}

#define QueueDataCount(queue,count){\
  count =  (queue.rear - queue.front + queue.size ) % queue.size;\
}

#define QueueEmpty(queue)\
(queue.rear == queue.front)\


#define QueueFull(queue)\
((queue.rear +1)%queue.size==queue.front)\

#define QueueClear(queue){\
  queue.front = queue.rear=0;}

#endif

回复

使用道具 举报

7

主题

190

回帖

216

积分

高级会员

积分
216
发表于 2021-12-30 20:40:47 | 显示全部楼层
感谢分享
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106827
QQ
发表于 2021-12-31 08:49:54 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

4

主题

286

回帖

298

积分

高级会员

积分
298
发表于 2021-12-31 08:53:27 | 显示全部楼层
言简意赅。非常好。
回复

使用道具 举报

36

主题

142

回帖

255

积分

高级会员

积分
255
发表于 2021-12-31 08:56:58 | 显示全部楼层
C语言就是缺少类似C++的数据结构STL库,大家重复造轮子
回复

使用道具 举报

73

主题

1194

回帖

1413

积分

至尊会员

积分
1413
发表于 2021-12-31 09:09:26 | 显示全部楼层
takent 发表于 2021-12-31 08:56
C语言就是缺少类似C++的数据结构STL库,大家重复造轮子

挺好的,简单,重复造又何妨,反正stl这些压根看不懂。。仅仅是会用罢了,难不成8位单片机也移植大的库上去吗?不现实的。
回复

使用道具 举报

8

主题

26

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2021-12-31 10:53:25 | 显示全部楼层
takent 发表于 2021-12-31 08:56
C语言就是缺少类似C++的数据结构STL库,大家重复造轮子

C++ 是可以使用STL 这些。但是兄弟不知道你在中断里面用过STL 没有就是个坑啊。中断最正要的高速。C语言用typedef完全可以接近数据抽象的概念。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-6 09:07 , Processed in 0.292760 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表