在我的代码中,我有这些声明:
#define NUM_CHANNELS 3
uint8_t currentByte = 0xAA;
RingBuff_Data_t Buffer_GetElement(RingBuff_t* Buffer);
Buffer_GetElement函数在我的代码中定义如下:
RingBuff_Data_t Buffer_GetElement(RingBuff_t* Buffer)
{
RingBuff_Data_t BuffData;
BUFF_ATOMIC_BLOCK
{
#if defined(BUFF_EMPTYRETURNSAA)
if (!(Buffer->Elements))
return 0xAA;
#elif defined(BUFF_NOEMPTYCHECK)
#error No empty buffer check behaviour specified.
#endif
BuffData = *(Buffer->OutPtr);
Buffer->OutPtr++;
Buffer->Elements--;
if (Buffer->OutPtr == &Buffer->Buffer[BUFF_LENGTH])
Buffer->OutPtr = (RingBuff_Data_t*)&Buffer->Buffer;
}
return BuffData;
}
每次我尝试使用以下行:
currentByte = Buffer_GetElement(uartChannels[ii].RingBuff.Buffer);
我收到错误说:
传递' Buffer_GetElement'的参数1来自不兼容的指针 输入[默认启用]
有谁知道为什么会这样? 我现在已经盯着它看了一个小时,无法弄明白。幸运的是,这可能是一些愚蠢的错误。
我很感激帮助!
答案 0 :(得分:2)
uartChannels[ii].RingBuff.Buffer
的类型不是RingBuff_t*
。
声明函数Buffer_GetElement()
采用RingBuff_t*
参数,但是您尝试传递一些不同的指针。