如何查看传递给函数的函数指针是否返回void?

时间:2019-03-03 23:24:55

标签: c

我有一个带有函数指针的函数,并且如果指针所指向的函数返回,我想存储返回值,否则就运行该函数。像这样:

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);  
};

但这会产生编译错误。

2 个答案:

答案 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)