Generating headers with -H

Denis Koroskin 2korden at gmail.com
Mon Nov 2 12:33:16 PST 2009


On Mon, 02 Nov 2009 22:48:59 +0300, grauzone <none at example.net> wrote:

> Andrei Alexandrescu wrote:
>> This question may actually belong in .learn.
>>  What's exactly eliminated from the header generated with -H? I tried  
>> it just now and was surprised to see that the generated .di file  
>> includes the function bodies of regular (non-template) functions and  
>> methods.
>>  I was under the impression that generated headers exclude function  
>> bodies, and found documentation to support that viewpoint:
>>  http://www.digitalmars.com/d/2.0/dmd-windows.html#interface_files
>>  says:
>>  ============
>> A D interface file contains only what an import of the module needs,  
>> rather than the whole implementation of that module.
>>  The advantages of using a D interface file for imports rather than a D  
>> source file are:
>>      * D interface files are often significantly smaller and much  
>> faster to process than the corresponding D source file.
>>     * They can be used to hide the source code, for example, one can  
>> ship an object code library along with D interface files rather than  
>> the complete source code.
>> ============
>>  This strongly suggests that function bodies are eliminated. But what  
>> I'm seeing is that pretty much all function bodies are kept (exception:  
>> static this() functions are not), and only comments are removed.
>>  So what's -H really doing?
>
> Quoting from the same link:
> "[...] they are not part of the D language. They are a feature of the  
> compiler, and serve only as an optimization of the build process."
>
> A compiler specific hack that speeds up the build process. Especially  
> notice how it includes inlineable functions by design, which make it  
> relatively useless as "library headers".
>
>>  Andrei

.d and .di files are meant to be interchangeable without any impact on  
produced binary.
I do think that -H-strip-all (including private methods etc) would be  
nice, though.



More information about the Digitalmars-d mailing list