Static constructors guaranteed to run?

ketmar via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jun 28 20:59:30 PDT 2015


On Mon, 29 Jun 2015 03:10:44 +0000, Tofu Ninja wrote:

> On Monday, 29 June 2015 at 02:31:18 UTC, ketmar wrote:
>> yes. it doesn't do that now, afair, but i can't see any sense in
>> running code that obviously does nothing, as it's owner is not used.
>> module ctors was designed for such things -- i.e. to run some code on
>> startup. if someone is doing some vital initialization in static ctor
>> of struct or class, and that struct or class aren't used anywhere else
>> in his code, he's doing it wrong. it *may* work now, but that's simply
>> 'cause compiler is not very well at removing unused code.
> 
> That seems wrong, what if I am doing separate compilation, how would the
> compiler know if the type is going to be used or not...

it doesn't really matter if you compiled your code separate or not: 
compiler *has* to know everything to successfully link the program. and 
it knows. for now it doesn't do much with that info, though, as using 
binutils for languages like D sux: D needs it's own compiled module 
format and optimising linker.

but as i told ealier, this is the limitiation of current implementation, 
not guarantee.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20150629/b9d518a4/attachment.sig>


More information about the Digitalmars-d-learn mailing list