在一个“clink.h”的文件中定义一个链表结构体
- typedef struct Elink{
- uint8_t * head;/*数据写入缓冲区头部*/
- uint8_t * headbuf;/*缓冲区头部指针*/
- uint8_t * endLen;/*缓冲区尾结束指针*/
- uint16_t dataLen;/*缓冲区内数据长度*/
- struct Elink *next;
- }ClinkType;
复制代码
再在一个缓冲文件“ringBuf.h”包含了“clink.h”
- #include "ringBuffer.h"
- #include "clink.h"
复制代码
在“ringBuf.h”中定义一个函数带ClinkType 类型的指针形参
- bool WriteDataToRingBuffer(ringBufType_t *pRingBuf,ClinkType *Phead,uint8_t *pBuf, uint16_t len);
复制代码
编译之后报错,说ClinkType未定义: error: #20: identifier "ClinkType" is undefined;
请问各位大神,我是用错了嘛,还是那里不对了?
文件包含可以嵌套,但不能递归(直接或间接包含自身)。
因为在一个翻译单元(即一个C文件)中类型声明不能重复,所以H头文件最好分成三类:类型声明,变量/函数声明,配置文件。这样不仅结构清晰层次分明,而且能很好处理你的问题。楼主的主要问题就是把“类型声明”和“变量/函数声明”混在一起,把类型声明独立出来弄个单独头文件就行了。
类似这样的:
100.png (2.74 KB, 下载次数: 0)
下载附件
1
2019-2-27 15:29 上传
一周热门 更多>