C,指向struct中函数的指针,警告“从不兼容的指针类型赋值”

时间:2013-07-08 21:18:32

标签: c pointers struct function-pointers

我有一个结构定义如下:

typedef struct {
    char (*behave) (int*);
} BEHAVIOURSTRUCT;

此结构在.h文件中定义,并包含在.c文件中 我有一个全局变量(MAX_BEHAVIOURS定义为3):

BEHAVIOURSTRUCT bhvr[MAX_BEHAVIOURS];

并在init中尝试将其设置为此,但在此我收到警告:“从不兼容的指针类型分配”

void init() {
bhvr[0].behave = BHVR_line_follow; // here
...
}

我想要的功能

void BHVR_line_follow(int *currstate){
....
}

通过它的声音我在结构中的声明和函数的指针不是来自同一个构建,但在我看来它们是。但很可能我错了。

1 个答案:

答案 0 :(得分:6)

这是你的功能,以及所需的功能类型,并排:

void BHVR_line_follow(int *currstate)
char (*behave) (int*)

所需的函数类型需要int*并返回char 您的函数需要int*并返回void(无)。

总而言之,BHVR_line_follow的返回类型是错误的。