私はCでベクトルを書いています。CVectorSearch関数はソートされていればbsearchを使い、ソートされていなければlfindを使います。 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
プログラムはまだかかわらず、正常に動作しています。