来源:公众号【鱼鹰谈单片机】
作者:鱼鹰Osprey
ID :emOsprey
程序出现 BUG 是很正常的事情,那你是否有过在程序运行前就提前发现 BUG 的经历呢?
前些天,鱼鹰在看同事的代码时,就从一小段代码中分析出了好几处 BUG。
现在,鱼鹰把关键代码放出来,给大家找找茬,顺便提高一下自己的找(技)茬(术)水平。
typedef struct {
uint32_t in; uint32_t out; uint32_t size; uint32_t *buffer; }fifo_def; void init(fifo_def *pfifo, uint32_t size){
if(size == 0 || (size & (size - 1))) // 2 的 幂次方 {
return; } pfifo->in = 0; pfifo->out = 0; pfifo->size = size; pfifo->buffer = malloc(size); }
uint32_t fifo_read_msg(fifo_def *pfifo, uint32_t **addr){
uint32_t len = 0; assert_param(pfifo != NULL); assert_param(pfifo->buffer != NULL); if(pfifo->in - pfifo->out) {
*addr = (uint32_t*)*(pfifo->buffer + (pfifo->out & (pfifo->size - 1))); len = 1; pfifo->out += len; } return len; }uint32_t fifo_write_msg(fifo_def *pfifo, uint32_t