我试图将一个函数分配给一个函数指针,但出现以下错误:
需要左值作为赋值的左操作数。
我的代码如下:
#include <stdio.h>
void intr_handler(int param){
printf("Hey there!\n");
}
int main(){
void *(intr_handlerptr)(int);
intr_handlerptr = intr_handler;
}
我看不到那里是什么问题,因为我为指针“ intr_handlerptr”分配了函数“ intr_handler”,并且它们具有相同的签名。我想念什么?
答案 0 :(得分:2)
我不确定void *(intr_handlerptr)(int);
的功能(尽管编译它很有趣,现在仅问另一个问题,现在是done),但是此声明是错误的。应该是:
void (*intr_handlerptr)(int);
然后您的代码正确编译
关于函数指针的教程:https://www.cprogramming.com/tutorial/function-pointers.html
编辑:在讨论此语法错误之后,似乎很明显(现在!)
void *(intr_handlerptr)(int);
与以下相同:
void *intr_handlerptr(int);
因此向前声明一个函数(该函数不存在,因此不会链接,但是您看不到它,因为编译器在尝试为其分配某些内容时会出错)