On Thursday, 4 February 2016 at 23:21:54 UTC, tsbockman wrote:
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.

Linkers don't know anything about types. A type is a language feature.

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.

Has nothing to do with the preprocessor.

He defined float_t to be an alias for double in one compilation unit, and float_t to be an alias for float in another compilation unit.

In C, compilation units are completely independent, and can in fact come from different compilers and different languages. C is very much a system level programming language.

Reply via email to