春秋霸业 发表于 2026-3-22 09:03:16

求助,环形缓冲区写程序编译时总是报错



新手,打算自己做一个WIFI时钟,一边实战一边学习。
写了一个环形缓冲区的框架,但是编译总是报错,已定位到问题点,但是没想明白报错原因 ,求助各位大佬。

报错信息如下:


Rebuild started: Project: wifi clock
Rebuild target 'Target 1'
compiling main.c...
user\wifi.h(20): error C141: syntax error near ')', expected '<id>'
compiling config.c...
compiling wifi.c...
user\wifi.h(20): error C141: syntax error near ')', expected '<id>'
user\wifi.c(72): error C141: syntax error near ')', expected '<id>'
user\wifi.c(81): error C141: syntax error near 'data', expected 'sizeof'
Target not created.
Build Time Elapsed:00:00:00



目前已定位到问题点,问题就出在wifi.c 和wifi.h 中的以下程序和声明:

bit RingBuffer_Write(RingBuffer *rb, unsigned char data);


/**
* @brief 向环形缓冲区写入一个字节
* @param rb: 指向环形缓冲区结构体
* @param data: 要写入的字节数据
* @return 1-写入成功,0-缓冲区满写入失败
*/
bit RingBuffer_Write(RingBuffer *rb, unsigned char data)
{
    // 缓冲区满则返回失败
    if(RingBuffer_Full(rb))
    {
      return 0;
    }
   
    // 写入数据到tail位置
    rb->buffer = data;
    // tail指针循环(达到缓冲区大小则归0)
    rb->tail = (rb->tail + 1) % BUFFER_SIZE;
    // 有效数据计数+1
    rb->count++;
   
    return 1;
}


到底为什么报错,求指点


lcwswust 发表于 2026-3-22 10:10:43

data是个类型,不能作为变量名,建议把data 改为dat

春秋霸业 发表于 2026-3-22 10:39:26

lcwswust 发表于 2026-3-22 10:10
data是个类型,不能作为变量名,建议把data 改为dat

{:baoquan:}谢谢这位朋友,一针见血,问题已解决。我自己排查了半天,用豆包也没找到原因,自身知识还是太欠缺了

狂热主宰 发表于 2026-3-22 17:00:58

还有xdata也是类型

春秋霸业 发表于 2026-3-23 13:37:42

狂热主宰 发表于 2026-3-22 17:00
还有xdata也是类型

感谢指点,环形缓冲区因为要定义大数组,xdata确实也涉及到了,不指定位置会报错{:baoquan:}
页: [1]
查看完整版本: 求助,环形缓冲区写程序编译时总是报错