how to call std_stdio_static_this from a dynamically loaded shared library (osx)
timotheecour
thelastmammoth at gmail.com
Wed Oct 3 14:51:09 PDT 2012
> What happens if you just call "std_stdio_static_this" the first
> you do in your main function?
In my case I can't: I don't have control over the main function
(it could be written in C for example).
> @property File stdin ()
> {
> if (!_stdin.p)
> _stdin.p = &stdinImpl;
> return _stdin;
> }
I guess you also want to add inside the if(): "stdinImpl.handle =
core.stdc.stdio.stdin;", etc.
> The same for "stdout" and "stderr". But this may not be good
> for performance reasons. I don't know how good the compiler is
> at optimizing these kind of functions.
I doubt the compiler can do much optimizing here, since the if
won't always be true, but probably IO is slow enough compared to
a branch so it might not matter.
That being said, templatizing std_stdio_static_this as above
would avoid branching at every single call to writeXX functions.
Would there be any disadvantage?
Also, I grepped for static_this, it appears this hack is only
used in 2 places:
* std.stdio (=>stdiobase)
* std.process (=>processinit)
So the same template trick could be used in those 2 places.
More information about the Digitalmars-d-learn
mailing list