小编bob*_*u10的帖子

函数指针不兼容的指针类型 void (*)(void *) from void (my_type *)

我收到上述警告并理解它,但不知道如何解决它。我的代码在下面,但基本上我正在做的是将一个函数指针存储在一个结构中,并在我从 main 调用的另一个函数中初始化该结构。当我将代码与默认函数(即 free())一起使用时,代码似乎可以编译,但当我将它与下面的 test_func 函数一起使用时,代码似乎可以编译。想法?

结构:

  typedef struct my_struct {
  my_type **double_pointed;
  int num;
  void (*funcp)(void *data);
  } my_struct_t;
Run Code Online (Sandbox Code Playgroud)

初始化函数:

my_struct_t *init(int num, void (*my_funcp)(void *data)) {

    // unimportant code to the problem, but basically just some mallocs for the other data

  my_struct_t *my_str;
  my_str->funcp = my_funcp;

  return struct;
}
Run Code Online (Sandbox Code Playgroud)

我想指出的功能:

void desired_func(my_type *obj) {}
Run Code Online (Sandbox Code Playgroud)

我对 init 函数的调用:

init(5, desired_func);
Run Code Online (Sandbox Code Playgroud)

完整错误:

从“void (my_type *)”分配给“void (*)(void *)”的不兼容指针类型

在上面的 init 函数中的那一行:

my_struct_t *my_str;
my_str->funcp = my_funcp;
Run Code Online (Sandbox Code Playgroud)

c struct pointers function-pointers

1
推荐指数
1
解决办法
4899
查看次数

标签 统计

c ×1

function-pointers ×1

pointers ×1

struct ×1