2013-12-18 54 views
0

我有一個函數int handle_request(server* server, int conn_fd);需要2個參數。 如何將它分配給這個函數指針? void (*func)(void* input, void* output)如何分配函數指針?

我一直在努力做的事情一樣

void (*func)(void* input, void* output) = handle_request;

and tried these,但我總是得到

警告:初始化從兼容的指針類型[默認啓用]

+2

什麼的原型'handle_request'是什麼樣子? –

+2

'handle_request'的簽名需要匹配你的函數指針定義 - 也許你應該發佈這個定義呢? –

+1

handle_request函數返回一個'integer',你聲明的函數指針返回一個'void'。 – 2013-12-18 09:13:36

回答

1

正如在你的問題中提到,如果函數原型返回int,那麼指針必須匹配它。如果retuzrn類型應該是無效的,那麼指針也是無效的。

void handle_request(void* input, void* output) 
{ 
} 

int main(int argc, _TCHAR* argv[]) 
{ 
    void (*func)(void* input, void* output) = handle_request; 
    return 0; 
} 

int handle_request(void* input, void* output) 
{ 
    return 0; 
} 

int main(int argc, _TCHAR* argv[]) 
{ 
    int (*func)(void* input, void* output) = handle_request; 
    return 0; 
} 
0

你的函數指針應該匹配你的功能簽名。 這意味着您可以指定函數指針:

void (*func)(void* input, void* output) 

的功能:

void handle_request(void *input, void *output) 

如果你嘗試將它自己的方式,將發出警告。