René Scharfe <l.s.r@xxxxxx> writes: >> You can hack around it by passing a wrapper callback that flips the >> arguments. Since we have a "void *" data pointer, that would point to a >> struct holding the "real" callback and chaining to the original data >> pointer. >> >> It does incur the cost of an extra level of indirection for each >> comparison, though (not just for each qsort call). > > Indeed. We'd need a perf test to measure that overhead before we > could determine if that's a problem, though. I agree. Hopefully it won't be too much cost. >> You could do it as zero-cost if you were willing to turn the comparison >> function definition into a macro. > > Ugh. That either requires changing the signature of qsort_s() based > on the underlying native function as well, or using a void pointer to > pass the comparison function, no? Let's not do that, at least not > without a good reason. Let's not go there. It may be zero runtime cost, but the cognitive cost for people who need to code the comparison callback using the macro is high.