warning: passing argument 1 of 'bsearch' makes pointer from integer without a cast
,相应的代码是
Parent =bsearch((const size_t)ParentNum, ClauseVector, Size,
sizeof(CLAUSE),pcheck_CompareNumberAndClause);
compilar是gcc。
此处CLAUSE被定义为* CLAUSE。
@Paul以下更多信息已添加:
我对上述代码所做的更改是:
Parent =bsearch((uintptr_t*)(size_t)(const)ParentNum,(uintptr_t*) ClauseVector,Size,
sizeof(CLAUSE),pcheck_CompareNumberAndClause);
编译后我收到以下警告:
warning: type defaults to 'int' in declaration of 'type name'
我该如何纠正呢?
答案 0 :(得分:1)
bsearch的签名是:
void * bsearch(const void *key, const void *base, size_t nel, size_t width, int (*compar) (const void *, const void *));
很明显,代码中的第一个参数(至少)是不正确的。
如果没有看到你的其余代码,很难解决这个问题,但它可能应该是这样的:
Parent = bsearch(&ParentNum, (void *)ClauseVector, Size,
sizeof(CLAUSE), pcheck_CompareNumberAndClause);
如果您发布了ParentNum,ClauseVector,Size,CLAUSE等的定义,将会有所帮助。
答案 1 :(得分:0)
bsearch()
的第一个参数应该是指向要搜索的值的指针。我不知道ParentNum
是什么,但是你的转换为const size_t
,它不是指针类型,所以你得到警告。在您的情况下,bsearch
的第一个参数应为CLAUSE *
,您要在ClauseVector
中搜索。
此处CLAUSE被定义为* CLAUSE。
没有任何意义。