В вашем коде много ошибок,
Вы изначально возвращали указатель на структуру, тогда как в объявлении функции указано int.
struct arco *compDist(const void *a, *void const *b, i, j){
struct arco *ia = (struct arco *)a;
struct arco *ib = (struct arco *)b;
return(if(ia->arco[i].dist > ib->arco[j].dist)? *ia : *ib)
}
Также сравнение, как
if(*ia > *ib)
неверен, вы не можете просто сравнить две структуры, в c ++ вы можете перегрузить оператор '>', но вы не можете сделать то же самое в c, насколько я знаю.
Это должно сработать, но я не могу этого гарантировать, так как понятия не имею, как вы определили свою структуру arco.