左值需要作为函数指针赋值的左操作数
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,但是你看不到它,因为编译器在试图给它赋值时发出错误)
我正在尝试将函数分配给函数指针,但出现以下错误:
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,但是你看不到它,因为编译器在试图给它赋值时发出错误)