【问题标题】:C, pointer to function in struct, warning "assignment from incompatible pointer type"C,指向结构中函数的指针,警告“来自不兼容的指针类型的赋值”
【发布时间】:2013-07-08 21:18:32
【问题描述】:

我有一个定义如下的结构:

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

此结构在 .h 文件中定义,并包含在 .c 文件中 我有一个全局变量(MAX_BEHAVIOURS 定义为 3):

BEHAVIOURSTRUCT bhvr[MAX_BEHAVIOURS];

在初始化时我尝试分配它,但在这里我收到警告:“分配来自不兼容的指针类型”

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

我要分配的功能

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

听起来我在结构中的声明和指向函数的指针不是来自同一个构建,但在我看来它们是。但很可能我错了。

【问题讨论】:

    标签: c pointers struct function-pointers


    【解决方案1】:

    这是你的函数,以及所需的函数类型,并排:

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

    所需的函数类型采用int* 并返回char
    您的函数接受 int* 并返回 void(无)。

    总而言之,BHVR_line_follow 的返回类型是错误的。

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2013-06-21
      • 2016-09-16
      • 1970-01-01
      • 2018-11-23
      相关资源
      最近更新 更多