左值需要作为函数指针赋值的左操作数

lvalue required as left operand of assignment for function pointers

我正在尝试将函数分配给函数指针,但出现以下错误:

lvalue required as left operand of assignment.

我的代码如下:

#include <stdio.h>
void intr_handler(int param){
    printf("Hey there!\n");
}

int main(){
    void *(intr_handlerptr)(int);
    intr_handlerptr = intr_handler;
}

我看不出那里有什么问题,因为我正在将函数 "intr_handler" 分配给指针 "intr_handlerptr" 并且它们具有相同的签名。我错过了什么?

我不确定 void *(intr_handlerptr)(int); 做了什么(尽管它编译了,单独问另一个问题会很有趣,现在是 )但是这个声明是不正确的。应该是:

void (*intr_handlerptr)(int);

然后您的代码可以正确编译

函数指针教程:https://www.cprogramming.com/tutorial/function-pointers.html

编辑:在讨论了这个语法错误之后,很明显(现在!)

void *(intr_handlerptr)(int);

等同于:

void *intr_handlerptr(int);

所以向前声明一个函数(它不存在所以它不会 link,但是你看不到它,因为编译器在试图给它赋值时发出错误)