On Jun 20, 2011, at 12:09 PM, Stephen Montgomery-Smith wrote: >> top_button_cross() probably should be declared as returning void. What's >> presumably happening is that it gets a default return type of int since it >> doesn't otherwise specify a return type, and then fails to have an explicit >> return, which is an error. > > Is a return with no value, from a function of type int, meant to be an error > in K&R code?
I don't believe so, but pure K&R didn't require compilers to perform any sanity checking of function return types. This led to all sorts of bugs, which is why lint was invented and why ANSI-C compilers do expect function prototypes and perform function return-type checking. > If so, I will change the code so that "return" becomes "return 0". > > Otherwise, I think the clang compiler should be changed so that this is a > warning, not an error. Or at least an error that can be switched off with > -Wno-return-type. > > I will say that I have no desire to put ansii patches into working K&R code. It sounds like you want Clang to support -traditional. It explicitly does not do so, although there is a bug filed as: http://llvm.org/bugs/show_bug.cgi?id=4557 The best course is to convert K&R C code to C89/ANSI; failing that, perhaps use gcc for things which require -traditional instead of Clang (although GCC seems to be depreciating -traditional also). Regards, -- -Chuck _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to "[email protected]"
