2015-11-05 121 views
-3

我正在編寫一個C庫,並且經常收到警告「警告:返回使指針中的整數沒有強制轉換[默認情況下啓用]」或類似於它。例如:C庫警告(指針強制轉換)

int chal(chal_l* list, int pos) 
{ 

    return list->data[pos]; \\warning occur here 

} 

這是關於arraylist。 「pos」是索引。數據在arraylist結構中是「void ** data」。我不太清楚如何解決這些與此類似的警告,並且我在代碼中獲得了4-5次警告。

+3

你的代碼片段應該是[Short,Self Contained,Correct(Compilable),Example](http://sscce.org) - 我們不知道'list-> data' =>中存儲的是那些'int's?如果沒有,爲什麼你將函數定義爲返回int的函數呢? (因此警告) –

+0

list-> data is in –

+0

爲什麼我看不到它?嘗試成爲SSCCE,正如我之前提到的 –

回答

0

數據在arraylist結構中爲「void ** data」。

這意味着list->data[pos]類型是void *,不int,因此警告。

如果您嘗試返回list->data[pos]的值,則該函數的返回類型需要爲void *而不是int

如果你試圖返回一個整數對象list->data[pos],那麼你需要做的是這樣的值如下:

return *((int *) list->data[pos]); 

也就是說,你從一個指針轉換list->data[pos]void指向int並取消引用結果。

如果list->data[pos]指向的東西不是整數,那麼我不知道你在做什麼。

相關問題