分配函数指针时出现“类型左值作为赋值的左操作数”错误(不是==问题!)

时间:2016-11-21 19:54:40

标签: c function-pointers

我正在开发一个嵌入式C项目,它涉及使用函数指针的函数回调。我在我的所有代码中都被删除了,并创建了一个产生错误的简单示例。我一直盯着这个看了一个多小时,仍然看不出我做错了什么。任何帮助非常感谢!

/* Callback function pointer type for ADC Sample Interrupt */
typedef void (*ADC_Callback_Func)(uint16_t);

/* ADC Timer interrupt callback function pointer */
ADC_Callback_Func ADC_CallbackFunction(uint16_t sample);

/* ADC Callback function */
void ADC_SampleReceived(uint16_t sample);

///////////////////////////////////////////////////////////////////////

int main(void)
{
    /* Initialize ADC Timer */
    ADC_CallbackFunction = &ADC_SampleReceived; //<-- Code Bombs here

    /* Infinite loop */
    while (1) {

    }
}

void ADC_SampleReceived(uint16_t sample)
{

}

同样,我在编译后收到的错误是:

  

“键入左值作为赋值的左操作数”

1 个答案:

答案 0 :(得分:2)

在此代码中,ADC_CallbackFunction不是函数指针。它是一个函数,它接受uint16_t并返回一个函数指针。