2015-11-05 133 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]指向的东西不是整数,那么我不知道你在做什么。