я написал функцию сравненияПредупреждение при использовании QSort в C
int cmp(const int * a,const int * b)
{
if (*a==*b)
return 0;
else
if (*a < *b)
return -1;
else
return 1;
}
и у меня есть мое заявление
int cmp (const int * value1,const int * value2);
и я звоню QSort в моей программе, как так
qsort(currentCases,round,sizeof(int),cmp);
когда я скомпилирую его, я получаю следующее предупреждение
warning: passing argument 4 of ‘qsort’ from incompatible pointer type
/usr/include/stdlib.h:710: note: expected ‘__compar_fn_t’ but argument is of type ‘int
(*)(const int *, const int *)’
Программа работает очень хорошо, поэтому моя единственная проблема заключается в том, почему ей не нравится, как это использовать?
http://stackoverflow.com/questions/2228695/what-are-the-parameters-in-this-c-qsort-function-call/2228754#2228754 –
Просто предложение для более простой реализации вашего cmp; а не if if else, вы могли бы просто использовать вычитание. – nategoose
@nategoose: Нет, если вы не хотите вводить неприятные ошибки переполнения целого числа. –