gpt4 book ai didi

c - 来自整数的指针在调用 lfind 时没有强制转换警告

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:45 25 4
gpt4 key购买 nike

我正在用 C 编写一个 vector 。CVectorSearch 函数在排序时使用 bsearch,在未排序时使用 lfind。为什么我在调用 lfind 时收到警告“赋值从整数生成指针而不进行强制转换”?即使使用 lfind,它似乎也能正常工作。

typedef struct
{
void *elements;
int logicalLength;
int allocatedLength;
int elementSize;
} CVector;

typedef void (*CVectorFreeElemFn)(void *elemAddr);


int CVectorSearch(const CVector *v, const void *key,
CVectorCmpElemFn comparefn,
int startIndex, bool isSorted)
{

void * found;
int elemSize = v->elementSize;
int length = v->logicalLength;
void *startAddress = (char*)v->elements + startIndex*elemSize;

if(isSorted)
found = bsearch(key, startAddress, length, elemSize, comparefn);
else
found = lfind(key, startAddress, &length, elemSize, comparefn);


if(found)
return ((char*)found - (char*)v->elements) / elemSize;
else
return -1;
}

编辑:现在我已经包含了 search.h 我得到了:

warning: passing argument 3 of 'lfind' from incompatible pointer type

尽管如此,该程序仍能正常工作。

最佳答案

你有没有包括<search.h>它定义了 lfind ?如果在没有原型(prototype)的情况下调用函数,您的编译器可能会假定它返回 int .

关于c - 来自整数的指针在调用 lfind 时没有强制转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1283246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com