typedef定义一个结构体类型,多文件引用出错,求助!

2019-12-13 18:23发布

在一个“clink.h”的文件中定义一个链表结构体
  1. typedef struct Elink{

  2.          uint8_t *  head;/*数据写入缓冲区头部*/
  3.          uint8_t *  headbuf;/*缓冲区头部指针*/
  4.          uint8_t *  endLen;/*缓冲区尾结束指针*/
  5.          uint16_t  dataLen;/*缓冲区内数据长度*/
  6.         struct Elink *next;
  7. }ClinkType;
复制代码

再在一个缓冲文件“ringBuf.h”包含了“clink.h”
  1. #include "ringBuffer.h"
  2. #include "clink.h"
复制代码

在“ringBuf.h”中定义一个函数带ClinkType 类型的指针形参
  1. bool WriteDataToRingBuffer(ringBufType_t *pRingBuf,ClinkType *Phead,uint8_t *pBuf, uint16_t len);
复制代码

编译之后报错,说ClinkType未定义: error:  #20: identifier "ClinkType" is undefined;

请问各位大神,我是用错了嘛,还是那里不对了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
37条回答
mii
1楼-- · 2019-12-14 17:43
icoyool 发表于 2019-2-21 19:48
这个循环嵌套的问题一直也困扰着我,我的做法是一个文件。

我现在是多个文件带参传进去,现在好了,每个文件都有定义typedef
我只是暂时屏蔽了部分代码,单独来调试这两个文件,我看了STM32的库也是这样用也可以,就是我自己写的不行
zhang0352505
2楼-- · 2019-12-14 20:35
感觉这种奇怪的问题最不好找原因了,持续关注
canspider
3楼-- · 2019-12-15 01:45
 精彩回答 2  元偷偷看……
OneRain
4楼-- · 2019-12-15 07:28
很简单,顺序搞错了
#include "clink.h"
#include "ringBuffer.h"
调换一下就可以了!!!
所有东西的使用都是先声明!!!
mcu5i51
5楼-- · 2019-12-15 09:45
头文件只声明结构体和外部变量名,在c文件中定义一次变量
mii
6楼-- · 2019-12-15 13:29
mcu5i51 发表于 2019-2-24 18:03
头文件只声明结构体和外部变量名,在c文件中定义一次变量

那我要在其他文件中的函数参数要传入这个自己定义类型,就出问题了

一周热门 更多>