Linked by MOS6510 on Thu 10th Jan 2013 23:25 UTC
General Development "For years I've tried my damnedest to get away from C. Too simple, too many details to manage, too old and crufty, too low level. I've had intense and torrid love affairs with Java, C++, and Erlang. I've built things I'm proud of with all of them, and yet each has broken my heart. They've made promises they couldn't keep, created cultures that focus on the wrong things, and made devastating tradeoffs that eventually make you suffer painfully. And I keep crawling back to C."
Permalink for comment 548569
To read all comments associated with this story, please click here.
RE[7]: Point by point
by kwan_e on Sun 13th Jan 2013 06:27 UTC in reply to "RE[6]: Point by point"
Member since:

In C, if I accidentally pass my string compare function to qsort while I'm trying to sort an array of ints, the program will compile and run, and then screw up badly at runtime.

That's not so much a problem with using function pointers as it is with weak typing. qsort has to be able to sort any types, so the arguments passed to the sorting function are void*, making the function signature similarly unhelpful.

However, if you write a thin wrapper on top of qsort that takes in a function pointer with more specific argument types, then the compiler will complain reliably.

Reply Parent Score: 3