Я не могу понять, как исправить ошибку компиляции C2664, которая сводила меня с ума всю ночь! Ошибка возникает из-за вызова qsort (). Я хочу отсортировать массив ID2IX, хранящийся в массиве, указанном по radioID:
typedef struct id2ix { // struct maps radio id to array index
int id; // radio id
int ix;
} ID2IX;
ID2IX *RadioIDs = NULL; // radio IDs integer
.....
RadioIDs = (ID2IX*) malloc( totRadios * sizeof( ID2IX ));
if ( RadioIDs == NULL ) {
return FALSE;
}
.....
// the qsort compar function
int // sort the id2ix array by radioID
//sort_by_radioID ( ID2IX*one , ID2IX*two) { // tried this signature
sort_by_radioID ( void*one , void*two) { // tried this signature, also
return ((ID2IX*)one)->id - ((ID2IX*)two)->id;
}
// call to qsort that will not compile
qsort( RadioIDs, totRadios, sizeof(ID2IX), sort_by_radioID );
Ошибка, которую я получаю из этого:
Objects.cpp(295) : error C2664: 'qsort' : cannot convert parameter 4
from 'int (void *,void *)'
to 'int (__cdecl *)(const void *,const void *)'
None of the functions with this name in scope match the target type
Какого черта я делаю не так?
РЕДАКТИРОВАТЬ: Спасибо всем. Мы, C / ASM кодеры, мы не беспокоимся, черт побери const.