Static initialization order
BCS
none at anon.com
Tue Feb 9 16:21:16 PST 2010
Hello Justin,
> BCS wrote:
>
>> Hello Justin,
>>
>>> Yes, well, that unfortunately is what I'm doing in my C++ project ..
>>> putting implementation of all the static class declarations in one
>>> big file.
>>>
>> could you do that same sort of things that you do with .h files?
>>
> Sorry, I'm not sure I understand your question. For my problem, .h
> files are not the issue; the issue is about establishing the correct
> order for statically constructed objects which exist in .cpp files.
> Hence the reason for one big .cpp file.
>
I'm suggesting that a variation on the idea of scope guards be used: if static
initializer A depends on static initializer B having been run, than at the
top of A, it calls B. Then to prevent both of them from being called more
than once, you put in a short-circuit return at the top based on a function-local
static bool and (optionally) a check to see if the function is getting called
in a loop. Than you make shure that every static inilizer gets called at
least once and the order sort's its self out.
I don't remember exactly how static initializers are setup in C++ so you
might have to put the above in extra functions that get called from the static
initializers.
--
<IXOYE><
More information about the Digitalmars-d
mailing list