错误从不兼容的指针类型[默认启用]传递'Buffer_GetElement'的argument1?

时间:2014-06-10 15:32:37

标签: c embedded buffer

在我的代码中,我有这些声明:

#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来自不兼容的指针   输入[默认启用]

有谁知道为什么会这样? 我现在已经盯着它看了一个小时,无法弄明白。幸运的是,这可能是一些愚蠢的错误。

我很感激帮助!

1 个答案:

答案 0 :(得分:2)

uartChannels[ii].RingBuff.Buffer的类型不是RingBuff_t*

声明函数Buffer_GetElement()采用RingBuff_t*参数,但是您尝试传递一些不同的指针。