Questions about D
Robert Fraser
fraserofthenight at gmail.com
Thu May 22 10:17:04 PDT 2008
FireLancer wrote:
> Ive been learning c++ and was wondering if I should move over to D or not but theres a few details I'm not sure on and I couldn't find a good ansew on.
>
> 1)Is there a way to "hide" things complelty when building a static libary. eg in c++ if I have:
>
> //libary.h
> double GetRandomNumber();
>
> //libary.cpp
> int DoSomething()
> {
> //do something
> }
> double GetRandomNumber()
> {
> return (double)rand() / RAND_MAX;
> }
>
>
> This is fine as the user doesn't know DoSomething() exists. But now if they create there own DoSomething() they get linker errors because it exists twice :(
Yes and no. In D, everything is qualified by its module name, and
there's a 1:1 module:file correspondence. So it's unlikely that two
modules would have the same fully-qualified name with the exact same symbol.
A bigger problem is that D doesn't have the concept of header files
(well, it does sort of with .di files, but they're rarely used in
open-source since they're generally not necessary if you have the source
file). The problem is that if you import one of them, all the symbols
(even those marked "private") will be imported.
More information about the Digitalmars-d-learn
mailing list