我正在开发一个嵌入式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)
{
}
同样,我在编译后收到的错误是:
“键入左值作为赋值的左操作数”
答案 0 :(得分:2)
在此代码中,ADC_CallbackFunction
不是函数指针。它是一个函数,它接受uint16_t
并返回一个函数指针。