【问题标题】:warning: initialization from incompatible pointer type警告:从不兼容的指针类型初始化
【发布时间】:2013-12-16 10:59:27
【问题描述】:

我完全被困在这一点上。我有以下代码:

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

你能帮帮我吗?

提前致谢。

【问题讨论】:

  • 你能显示ev_up_leftacc_up_left的声明吗?它们要么不可见,要么属于不同类型。
  • void ev_up_left(); char acc_up_left();
  • 好的,看我的回答,你交换了两种类型。
  • 天哪,多么愚蠢的错误。谢谢大佬!!
  • @Aldridge1991 typedef void (*TPFN_ACC)(void); 是什么意思?我是C的初学者。

标签: c pointers warnings function-pointers


【解决方案1】:

你有这个:

void ev_up_left();
char acc_up_left();

在您的TRANSICION 结构中,char (*)(void) 类型的成员evento 使用void (*)(void) 类型的ev_up_left 进行初始化。

对于使用 acc_up_left 类型为 char (*)(void)void (*)(void) 类型的成员 accion 也是如此。

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

【讨论】:

    【解决方案2】:

    改变

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 2021-06-27
      • 2011-09-01
      相关资源
      最近更新 更多