2011-08-25 82 views
0

我有一個功能叫警告:控制到達非void函數結束

void *func(void *arg) 
{ 
    ///does some operation 
} 

現在我得到一個編譯器警告說:「控制到達非void函數結束」即使我聲明的返回類型爲void *

任何人都可以請告訴我如何解決這個警告?

+0

請發佈您的所有代碼,至少一個工作示例。 – 2011-08-25 12:21:37

回答

3

返回類型是void *,這意味着您將返回一個指針。也許你想輸入void,這意味着你不會返回任何東西?

+1

也許他通過回調綁定到這個函數簽名。然後他不能改變這一點,但應該簡單'返回NULL;'? – Nobody

+0

@ Andrea ..它實際上是無效的func(無效)之前,但我已經改變了原型void * func(void * arg),因爲爲了避免警告,我得到了第三個參數爲pthread_create函數。 – maddy

+0

@Nobody ...返回一個NULL..does它有任何其他的後果。是返回NULL相同的使用void *? – maddy

0

我們需要所有代碼才能真正看到發生了什麼,但是編譯器無法從該代碼中判斷函數是否會達到最終結果並返回某些內容。你說它會返回一個指針 - 一個void* - 並且什麼也沒有返回。這不是一個無效函數,那是一個void*函數。編譯器希望你返回一個void*,但是你可能會掉到函數的尾部。

您也可能有一個無限的while循環,編譯器足夠聰明地知道該函數不會返回,但這是純粹的推測,因爲您沒有發佈所有代碼。

相關問題