程序设计
文章平均质量分 64
zDarkBlue
这个作者很懒,什么都没留下…
展开
-
__attribute__((aligned(n)))与__attribute__((packed)) 区别 [转载]
_attribute__((packed))会让结构体以紧凑的方式进行排列,同样 #pragma pack (1)也会起到相同的效果,而__attribute__((aligned(n))) 实际上只影响紧随其后的变量或者结构体的对齐方式,而不会影响结构体内其他成员的对齐方式,当然编译器将会调整结构体的对齐方式,从而可能在结构体内部添加填充字节,以满足字节对齐的要求。此时aligned修饰的是具体的变量,并不会改变结构体的内部成员的对齐方式,仅仅只是改变结构体所定义的变量地址对齐方式。转载 2024-05-23 14:57:45 · 68 阅读 · 0 评论 -
一种环形双向链表的操作
在BLE扫描过程中,由于Privacy地址的加入,TIFS的时隙不能满足解析耗时的时间处理,这里将解析和时序ACK分为两个步骤,比如scan_req的ScanA解析和回复SCAN_RSP 两个步骤。这就需要一种链表数据结构记录这两个步骤的动作,不同的设备使用地址和地址类型这两个变量来进行判断,链表作用是可以缓存多个设备并且可以实现有序性。(1)检查该设备的地址和地址类型是否已经存在,不存在就添加到链表中,(当然前提还需判断该设备是为Privacy地址,进行解析,但是解析失败或者解析成功);原创 2023-06-21 15:43:12 · 110 阅读 · 0 评论 -
一种队列设计方法
将队列的内存想象成数组g_global_queue产生无数个副本铺开到内存中(实际没有铺开还只是一个数组),如下图。数组当作队列来用的时候,传统的队列设计方法在判空和判满的时候会损失一个Item,这种在Item占用的内存比较大的情况下比较浪费资源,这里介绍一种能将数组成员全部利用起来的方法。当write_index和read_index 相差数组长度的时候,认为是满队列;当write_index 和 read_index 相等的时候,认为是空队列;原创 2023-06-21 15:34:03 · 48 阅读 · 0 评论