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

时间:2018-11-17 09:06:11

标签: c pointers function-pointers

我试图将一个函数分配给一个函数指针,但出现以下错误:

  

需要左值作为赋值的左操作数。

我的代码如下:

#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”,并且它们具有相同的签名。我想念什么?

1 个答案:

答案 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);

因此向前声明一个函数(该函数不存在,因此不会链接,但是您看不到它,因为编译器在尝试为其分配某些内容时会出错)