On 06/20/2011 02:28 PM, Chuck Swiger wrote:
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).

This is someone else's code in math/xppaut. I have no desire to write extensive patches to his code. It would be a nightmare to maintain.

I'll go with "return 0".

Stephen
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to