在一个“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;
请问各位大神,我是用错了嘛,还是那里不对了?
看23楼最后一张图,Clink.c这一行,下面的未定义的提示。
是Clink.h包含了ringBuffer.h
应该是头文件互相包含引起的。Clink.h包含了ringBuffer.h,而ringBuffer.h又包含了clink.h
所以就呵呵了。
修改,是.h文件互相包含了。导致编译器在展开的时候,就没有链表的定义的。请阅读关于#ifdef在.h文件开头的使用。
一周热门 更多>