1

我有一个定义如下的结构:

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

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

BEHAVIOURSTRUCT bhvr[MAX_BEHAVIOURS];

在初始化中我尝试分配它,但在这里我收到警告:“分配来自不兼容的指针类型”

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

我试图分配的功能

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

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

4

1 回答 1

6

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

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

所需的函数类型接受 aint*并返回 a char
您的函数接受int*并返回void(无)。

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

于 2013-07-08T21:21:01.353 回答