我有一个带有函数指针的函数,并且如果指针所指向的函数返回,我想存储返回值,否则就运行该函数。像这样:
static void threadStart(void (*function)(void*), void* arg) {
if(function does not return void) (void*) store = function(arg);
else(function())
};
我该怎么做?我只是尝试做:
static void threadStart(void (*function)(void*), void* arg) {
(void*) store = function(arg);
};
但这会产生编译错误。
答案 0 :(得分:4)
你不能。
由于function
被声明为void (*function)(void*)
,因此它总是返回void,因此您不需要这样做。
答案 1 :(得分:1)
正如其他答案所说,这是不可能的。
看看正在尝试什么,您应该更改function
的签名,以便它返回带有前哨值的数据类型。例如,function
可以返回一个void*
,您可以检查它是否不是NULL
。
因此threadStart
的参数将变为(void* (*function)(void*), void *arg)
。这与pthread_create
之类的库中使用的通用设计模式相匹配,在这种情况下,它具有参数(void *(*start_routine) (void *), void *arg)
。