Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
June 07, 2007 separate and/or independent compilation | ||||
---|---|---|---|---|
| ||||
Can someone please tell me a few words about separate compilation in D. A small example would be nice, if I`m not asking too much. And one more thing, I haven`t understood very well what import does, is it similar to the #include statement from C++ or is it somewhat different? |
June 07, 2007 Re: separate and/or independent compilation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tibi | Tibi wrote: > Can someone please tell me a few words about separate compilation in D. A small example would be nice, if I`m not asking too much. > > And one more thing, I haven`t understood very well what import does, is it similar to the #include statement from C++ or is it somewhat different? Tibi, The import statement is more similar to Python (or Java) than to C/C++. The #include statement instructs the c/c++ pre-processor to include source into the current source file which is why you have to be careful about what you put in the included file and also why you should have guards. In D, the import statement imports a compiled module, not source. Modules are actually similar to classes in that they have constructors, destructors, public and private elements, and they provide a namespace. Their purpose is to provide functionality that the application can use, whether this is module globals, functions, classes, structs, type definitions, template definitions etc. In a module, you do not separate the declaration from the implementation, your implementation is the declaration. Modules are a phenomenal tool for library writers, and they also provide a great way to break up an application into functional units. In one sentence, modules provide the functionality of #include (and so much more) but with "special" binaries rather than source. Regards, Myron. |
June 07, 2007 Re: separate and/or independent compilation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Myron Alexander | "Myron Alexander" <someone@somewhere.com> wrote in message news:f49mt6$1t6d$1@digitalmars.com... > > In D, the import statement imports a compiled module, not source. > > ... > > In one sentence, modules provide the functionality of #include (and so much more) but with "special" binaries rather than source. Not exactly. When you import a module, it will only ever look for a source file (.d or .di). It never looks for compiled modules. Once it finds a source file, it will lex it, parse it, and do enough semantic analysis to extract the symbol table, which can then be used from the current module. |
June 08, 2007 Re: separate and/or independent compilation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jarrett Billingsley | Jarrett Billingsley wrote: > "Myron Alexander" <someone@somewhere.com> wrote in message news:f49mt6$1t6d$1@digitalmars.com... >> In D, the import statement imports a compiled module, not source. >> >> ... >> >> In one sentence, modules provide the functionality of #include (and so much more) but with "special" binaries rather than source. > > Not exactly. When you import a module, it will only ever look for a source file (.d or .di). It never looks for compiled modules. Once it finds a source file, it will lex it, parse it, and do enough semantic analysis to extract the symbol table, which can then be used from the current module. > > Thanks for the clarification, I misunderstood how modules work. Please correct me if the following is incorrect: Modules are not included in the current source as part of the source (like #include does) but the module (.d) or module interface (.di) is parsed for declarations and module constructor/destructor/static methods. Thanks, Myron. |
June 08, 2007 Re: separate and/or independent compilation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Myron Alexander | "Myron Alexander" <someone@somewhere.com> wrote in message news:f4a78d$qhk$1@digitalmars.com... > > Please correct me if the following is incorrect: > > Modules are not included in the current source as part of the source (like #include does) but the module (.d) or module interface (.di) is parsed for declarations and module constructor/destructor/static methods. Right :) |
June 08, 2007 Re: separate and/or independent compilation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tibi | Reply to Tibi,
> Can someone please tell me a few words about separate compilation in
> D. A small example would be nice, if I`m not asking too much.
>
> And one more thing, I haven`t understood very well what import does,
> is it similar to the #include statement from C++ or is it somewhat
> different?
>
to compile a file and not link it use -c
dmd -c myfile.d
to link several object files uses your linker
on linux
gcc a.o b.o c.d -<needed flags> // the flags can be found by calling dmd with a hello world and watching the output to stdout
on win32 it is about the same but the linker you will need to use in in dm/bin/link.exe and I don't remember how to get the args. OTOH if you call DMD with only object files, in win32 or linux it will link them
|
June 09, 2007 Re: separate and/or independent compilation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jarrett Billingsley | Thanks |
Copyright © 1999-2021 by the D Language Foundation