在c中存储指向带有参数的回调函数的指针

在c中存储指向带有参数的回调函数的指针,c,function,pointers,callback,arguments,C,Function,Pointers,Callback,Arguments,我正在尝试存储一个对回拨的引用(我想就是这样),以便以后在本地使用。我尝试过的代码如下所示 void (Port4Task)(uint8_t); // user function void BumpInt_Init(void(*task)(uint8_t)){ Port4Task = task(); 不幸的是,当我尝试这样做时,我得到了一个错误“表达式必须是可修改的左值”和“函数调用中的参数太少”。我也试过, uint8_t value; void (Port4Task)(uint8_

我正在尝试存储一个对回拨的引用(我想就是这样),以便以后在本地使用。我尝试过的代码如下所示

void (Port4Task)(uint8_t);   // user function
void BumpInt_Init(void(*task)(uint8_t)){
  Port4Task = task();
不幸的是,当我尝试这样做时,我得到了一个错误“表达式必须是可修改的左值”和“函数调用中的参数太少”。我也试过,

uint8_t value;
void (Port4Task)(uint8_t);   // user function
void BumpInt_Init(void(*task)(uint8_t)){
  Port4Task = task(value);
但我仍然得到错误“表达式必须是可修改的左值”。如果有任何关于我应该做什么,我做错了什么,或者我如何能做得更好的建议、解释或澄清,我真的非常感谢社区的意见

谢谢 卡斯

我也试过了

void (Port4Task)();   // user function
void BumpInt_Init(void(*task)(uint8_t)){
Port4Task = task;


使用这个,我仍然得到上面提到的左值错误。这实际上是我的第一次尝试。

void(Port4Task)(uint8_t);//用户函数void BumpInt_Init(void(*task)(uint8_t)){Port4Task=task;使用此函数我仍然会得到上面提到的左值错误。这实际上是我的第一次尝试。
void(*Port4Task)(uint8_t)
@StoryTeller的编辑将您的全局定义为“指向函数的指针”,这是您想要的。此外,您需要向该全局分配指针,这意味着分配
任务
,而不调用它。也就是说,您还需要更改
Port4Task=task;//存储指向任务的指针,不要调用它
谢谢StoryTeller,谢谢有趣的是,我确实有一个*开始,但我想当我收到一个警告时(一开始我没有把uint8作为论点),我一定是出于某种原因把它删除了。
void (Port4Task)(uint8_t);   // user function
void BumpInt_Init(void(*task)(uint8_t)){
Port4Task = task;