On Friday 22 June 2007 18:29:34 David A. Wheeler wrote: > If you call a function that hasn't > been defined, C assumes that it takes an int, and returns an int, no matter > what it REALLY does.
<nitpick> Actually, C assumes it takes all varargs and returns an int. int blah(...); (see "man 3 va_arg".) </nitpick> Way back when (before the Ansi C 89 standard) there were no function prototypes, so every function was expected to do the above. This works for a surprising number of things because on a 32-bit platform, any pointer can be cast to an int and back so things that return pointers work if you return ints. Basically there was a register in which to expect the return value. On a 64-bit platforms this doesn't work, because it would have to default to long to hold a pointer and everybody just says "prototype the darn thing already". But then 64 bit platforms are a relatively recent invention (the DEC Alpha was around 1993 I think). The standards for them are even more recent... Rob -- "One of my most productive days was throwing away 1000 lines of code." - Ken Thompson. _______________________________________________ Tinycc-devel mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/tinycc-devel
