警告:从不兼容的指针类型初始化

时间:2013-11-30 11:04:36

标签: c pointers warnings function-pointers

我完全陷入了困境。我有以下代码:

typedef void    (*TPFN_ACC)(void); 
typedef char    (*TPFN_EVE)(void); 


typedef struct {
  int           idDestino;            
  char        * nombre;         
  TPFN_EVE      evento;         
  TPFN_ACC      accion;        
} TRANSICION;

然后我这样做:

TRANSICION transiciones_Stopped[] = {
    {UPLEFT, "t_Stopped_to_Up_Left", ev_up_left, acc_up_left},
    {0, 0, 0, 0}
};

我收到了这个警告:

warning: initialization from incompatible pointer type

你能帮我吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

你有这个:

void ev_up_left();
char acc_up_left();

在您的TRANSICION结构中,evento类型的成员char (*)(void)初始化为ev_up_left类型void (*)(void)

accion类型void (*)(void)的成员acc_up_leftchar (*)(void)类型{{1}}初始化相同。

您可能错误地交换了两种类型/两种结构成员。

答案 1 :(得分:1)

更改

typedef void    (*TPFN_ACC)(void); 
typedef char    (*TPFN_EVE)(void);

typedef void    (*TPFN_EVE)(void); 
typedef char    (*TPFN_ACC)(void);