On Thursday, 4 February 2016 at 23:10:23 UTC, H. S. Teoh wrote:
On Thu, Feb 04, 2016 at 10:57:00PM +0000, tsbockman via
Digitalmars-d wrote:
The annual Underhanded C Contest announced their winners today.
As always, the results are very entertaining, and also an
excellent advertisement for languages-that-are-not-C.
The first place entry is particularly ridiculous; is there any
modern language that would make it so easy to commit such an
awful "mistake"?
http://www.underhanded-c.org/#winner
Actually, I'm surprised that this works even in C - I would
have expected at least a compiler (or linker?) warning; this
seems like it should be easy to detect automatically.
The C preprocessor accepts all sorts of nasty, nonsensical
things.
Definitely. What puzzles me about the winning entry, though, is
that the compiler and/or linker should be able to trivially
detect the type mismatch *after* the preprocessor pass(es) are
already done.
It should just see that the post-preprocessor signatures of
`spectral_contrast()` in match.c and spectral_contrast.c are in
conflict, and either issue a warning, or refuse to link them at
all.