【发布时间】:2011-05-29 03:58:53
【问题描述】:
有没有什么方法可以调用函数,只需要知道它在指针中的地址,比如说"void *(*)(void *)" 类型的指针,以及它的参数的数量和类型?
函数可以有任意数量的参数!
【问题讨论】:
标签: c generics function pointers call
有没有什么方法可以调用函数,只需要知道它在指针中的地址,比如说"void *(*)(void *)" 类型的指针,以及它的参数的数量和类型?
函数可以有任意数量的参数!
【问题讨论】:
标签: c generics function pointers call
不,不是以任何便携式或标准方式。
但是,有一种标准方法可以在函数之间传递可变数量的参数。看看vsprintf。基本上,您需要一个接受va_list 的函数版本。
【讨论】:
大概不会。
在编写调用之前,您必须知道参数的数量,因此也知道类型。因此,您无法编写一行代码准确地调用一个接受 0 个参数或 1 个参数或 2 个参数的函数。你总是可以提供 2 并且相信事情会起作用 - 但编译器会(有理由)发出警告。
【讨论】: