我有一个结构定义如下:
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){
....
}
通过它的声音我在结构中的声明和函数的指针不是来自同一个构建,但在我看来它们是。但很可能我错了。
答案 0 :(得分:6)
这是你的功能,以及所需的功能类型,并排:
void BHVR_line_follow(int *currstate)
char (*behave) (int*)
所需的函数类型需要int*
并返回char
您的函数需要int*
并返回void
(无)。
总而言之,BHVR_line_follow
的返回类型是错误的。