簡體   English   中英

如何查看傳遞給函數的函數指針是否返回void?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM