1
votes

I have a struct defined as follow:

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

this struct is defined in a .h file and it is included in the .c file There i have a global variable (MAX_BEHAVIOURS is defined as 3):

BEHAVIOURSTRUCT bhvr[MAX_BEHAVIOURS];

and in the init i try to assign this, but here i get the warning: "assignment from incompatible pointer type"

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

the function i am trying to asign

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

by the sound of it my declaration in the struct and the pointer to the function are not from the same build, but in my opinion they are. But most likely i am mistaken.

1

1 Answers

6
votes

Here is your function, and the function-type required, side-by-side:

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

The function-type required takes an int* and returns a char.
Your function takes an int* and returns void (nothing).

To summarize, the return-type of BHVR_line_follow is wrong.