C库警告(指针强制转换)
问题描述:
我正在编写一个C库,并且经常收到警告“警告:返回使指针中的整数没有强制转换[默认情况下启用]”或类似于它。例如:C库警告(指针强制转换)
int chal(chal_l* list, int pos)
{
return list->data[pos]; \\warning occur here
}
这是关于arraylist。 “pos”是索引。数据在arraylist结构中是“void ** data”。我不太清楚如何解决这些与此类似的警告,并且我在代码中获得了4-5次警告。
答
数据在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]
指向的东西不是整数,那么我不知道你在做什么。
你的代码片段应该是[Short,Self Contained,Correct(Compilable),Example](http://sscce.org) - 我们不知道'list-> data' =>中存储的是那些'int's?如果没有,为什么你将函数定义为返回int的函数呢? (因此警告) –
list-> data is in –
为什么我看不到它?尝试成为SSCCE,正如我之前提到的 –