Ich schreibe einen Vektor in C. Die CVectorSearch-Funktion verwendet bsearch, wenn es sortiert ist, und lfind, wenn es unsortiert ist. Warum bekomme ich die Warnung "Zuweisung macht Zeiger aus Ganzzahl ohne Besetzung", wenn ich lfind anrufe? Es scheint gut zu funktionieren, auch wenn lfind verwendet wird.Zeiger von Ganzzahl ohne Cast Warnung beim Aufruf 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;
}
edit: Jetzt, wo ich search.h enthalten habe ich erhalte:
warning: passing argument 3 of 'lfind' from incompatible pointer type
Das Programm immer noch richtig, obwohl arbeitet.