On Saturday, 4 October 2014 at 10:37:40 UTC, eles wrote:
On Saturday, 4 October 2014 at 10:27:18 UTC, John Colvin wrote:
On Saturday, 4 October 2014 at 04:02:46 UTC, eles wrote:
On Friday, 3 October 2014 at 15:47:33 UTC, John Colvin wrote:
On Friday, 3 October 2014 at 15:44:16 UTC, eles wrote:

So the compiler has no way of knowing whether you've forgotten to include a definition, or whether it's simply sitting in some other object file / library / whatever. The linker, however, can know, hence the linker error.

No "extern" required?...

nope, no extern required. The extern you are referring to is the storage class http://dlang.org/declaration.html#extern and is for variables.

This seem to allow an entire class of problems, by linking against long-time forgotten functions...

It's the core functionality that allows you to link to a function in a library without having the entire source available. You have a declaration, but the implementation is in another object file / library.

D is slightly tighter than C wrt all this. In C, you can just call functions without even having a declaration, the compiler will assume the argument types from what you passed in. A forgotten #include and compiling without warnings = horrific bugs in C. In D the declaration is required.

Reply via email to