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