[英]How can I see if a function pointer passed to a function returns void?
我有一個帶有函數指針的函數,並且如果指針所指向的函數返回,我想存儲返回值,否則就運行該函數。 像這樣:
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);
};
但這會產生編譯錯誤。
你不能
因為function
被聲明為void (*function)(void*)
,所以它始終返回void,因此您不需要這樣做。
正如其他答案所說,這是不可能的。
查看正在嘗試的操作,您應該更改function
的簽名,以便它返回帶有前哨值的數據類型。 例如, function
可以返回void*
,您可以檢查它是否不是NULL
。
因此threadStart
的參數將變為(void* (*function)(void*), void *arg)
。 這與pthread_create
庫中使用的通用設計模式匹配,在這種情況下,該模式具有參數(void *(*start_routine) (void *), void *arg)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.