Нельзя установить параметр при инициализации указателя на функцию, параметр должен быть объявлен как другой член struct
typedef struct {
void (*fun)(unsigned long);
unsigned long out;
unsigned long delay;
unsigned long Next_State[4];
} state ;
state fsm[4] = {
{DriveCenter,86,50,{stop,right,left,stop}},
{DriveRight,45,50,{stop,right,left,stop}},
{DriveLeft,787,50,{stop,right,left,stop}},
{DriveStop,33,50,{stop,right,left,stop}}
};
В C11 вы можете использовать анонимные struct
s, чтобы уточнить, что эти две переменные работают вместе:
typedef struct {
struct {
void (*fun)(unsigned long);
unsigned long out;
};
unsigned long delay;
unsigned long Next_State[4];
} state ;
state fsm[4] = {
{{DriveCenter,86},50,{stop,right,left,stop}},
{{DriveRight,45},50,{stop,right,left,stop}},
{{DriveLeft,787},50,{stop,right,left,stop}},
{{DriveStop,33},50,{stop,right,left,stop}}
};