Type safety could prevent nuclear war
tsbockman via Digitalmars-d
digitalmars-d at puremagic.com
Thu Feb 4 17:33:14 PST 2016
On Friday, 5 February 2016 at 01:14:05 UTC, Adam D. Ruppe wrote:
> D allows that. This is why I recommend putting `static
> assert(foo.sizeof == expectation);` in code that interfaces
> with external things, like C code, or D .di stuff.
>
> #include <math.h> /* sqrt */
D *doesn't* allow that though - at least, not in a monolithic,
idiomatic D program: there wouldn't be any duplicate declaration
of `spectral_contrast()` to mess up.
Yes, you can force the matter using `extern(C)` like anonymous
demonstrated earlier - but using `extern(C)` for internal linkage
in an all-D program would certainly attract scrutiny from
reviewers; it would score poorly on the "underhanded-ness" test.
As to the ".di" stuff - I've not used them. Care to educate me?
How can they cause similar problems?
> that line is an interesting one too: the trick is depending on
> namespace pollution by the include. In D, you might write
> `import core.stdc.math : sqrt;` and make that misleading
> comment part of the code.... though then you could perhaps
> exploit that module bug (314?).
314 definitely has potential. Should we start an "Underhanded D"
contest? Sounds like bad marketing, but a lot of fun :-P
More information about the Digitalmars-d
mailing list