【问题标题】:incompatible pointer types in C || void (*)(void *)C 中不兼容的指针类型 ||无效(*)(无效*)
【发布时间】:2020-10-21 07:53:16
【问题描述】:

我有两个函数,控制台说指针不兼容 void printList(tList, void(void*)) 我传递的功能是 void printUser(tUser*); printList(user->friends, printUser); 谁能帮我 ?我不明白这有什么问题。

【问题讨论】:

  • 想做什么?问题不清楚。
  • 我正在尝试将函数 (void ()(tUser)) 作为参数传递,但控制台说不兼容。 ps: 参数期望 = void (void) |参数给定 = void (tUser*)
  • 你不明白什么?函数的参数类型是tUser*,但printList 期望一个函数的参数是void*
  • 但是为什么将 tUser* 作为 void* 传递是错误的?
  • 多一点上下文会很好,但我想这是您无法使用强制转换的情况之一。

标签: c function pointers function-pointers


【解决方案1】:

您需要一个将void * 作为参数而不是tUser * 作为参数的函数。将您的void printUser(tUser*) 更改为void printUser(void*),然后在printUser 的定义内,您可以将参数转换为它需要的类型:

void printUser(void *arg) {
    tUser *casted_arg = (tUser *)arg;
    [...]
}

【讨论】:

  • 对我有意义!谢谢
猜你喜欢
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多