22-Sep-2013 15:52, Ruslan Mullakhmetov пишет:
I found where the problem is.
I used a system call (external C function) in class ctor. then I
declared global variable of this class and INITIALZIED that variable
inplace. If i move initalization in module static this() everything
compiles.
the code is:
incorrect version:
http://dpaste.com/hold/1391530/
correct:
http://dpaste.com/hold/1391523/
But now i need to sort out what the difference between
// global scope
int a = 10;
This just puts calculated value 10 into TLS data section as initializer
for a.
and
int a;
static this()
{
a = 10;
}
This defines a global with 0 initializer.
Then static this is a function that is executed for each D thread on
creation, following the module dependency chain (i.e. if there is static
this in imported module it should be run first).
I would be curious to see why you believe them to be the same.
I appreciate if somebody give a link or chapter number where to read.
--
Dmitry Olshansky