On Fri, 2006-12-01 at 17:21 +0000, Al Viro wrote: > There's a bunch of related issues, some kernel, some gcc, > thus the Cc from hell on that one.
I don't really see how this is a GCC question, rather I see this as a C question which means this should have gone to either [EMAIL PROTECTED] or the C news group. > While that is safe (modulo the portability constraint that affects much > more code than just timers), it ends up very inconvenient and leads to > lousy type safety. Why do you say is inconvenient, that shows up all the time in real code :). > The thing is, absolute majority of callbacks really want a pointer to > some object. There is a handful of cases where we really want a genuine > number - not a pointer cast to unsigned long, not an index in array, etc. > They certainly can be dealt with. Nearly a thousand of other instances > definitely want pointers. Then create an union which contains the two different types of call back. You know: union a { void (*callbackwithulong) (unsigned long); void (*callbackwithptr) (void*); }; And then you just use the correct in the correct place. I don't see why there is a mystery about this? Thanks, Andrew Pinski PS don't cross post and I still don't see a GCC development question in here, only a C one.