我的代码中有以下内容,RDMPacket
是在包含的头文件中定义的结构。前 3 个缓冲区指针(DMX 缓冲区)工作正常,但后 3 个(RDM 缓冲区)不起作用。难道我做错了什么?我还能如何使用指针引用一组结构?
uint8_t dmxRxBufA[NumberOfChannels];
uint8_t dmxRxBufB[NumberOfChannels];
uint8_t dmxRxBufC[NumberOfChannels];
uint8_t *pDMXWriteBuf = dmxRxBufA;
uint8_t *pDMXSpareBuf = dmxRxBufB;
uint8_t *pDMXReadBuf = dmxRxBufC;
RDMPacket rdmRxBufA;
RDMPacket rdmRxBufB;
RDMPacket rdmRxBufC;
RDMPacket *pRDMWriteBuf = rdmRxBufA;
RDMPacket *pRDMSpareBuf = rdmRxBufB;
RDMPacket *pRDMReadBuf = rdmRxBufC;
uart.c:90:27: error: incompatible types when initializing type 'struct RDMPacket *' using type 'RDMPacket'
uart.c:91:27: error: incompatible types when initializing type 'struct RDMPacket *' using type 'RDMPacket'
uart.c:92:26: error: incompatible types when initializing type 'struct RDMPacket *' using type 'RDMPacket'
最佳答案
前三个是uint8_t
的数组。这意味着 dmxRxBuf 是指向第一个元素的指针,因此,uint8_t*
其他只是 RDMPacket
。如果你想传递他们的地址,你可以使用这个:
RDMPacket *pRDMWriteBuf = &rdmRxBufA;
RDMPacket *pRDMSpareBuf = &rdmRxBufB;
RDMPacket *pRDMReadBuf = &rdmRxBufC;
或者创建 RDMPacket
的数组,就像您为 uint8_t 所做的那样
RDMPacket rdmRxBufA[];
RDMPacket rdmRxBufB[];
RDMPacket rdmRxBufC[];
关于c - 初始化指向结构的指针时类型不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28324225/