
On 9/2/2010 4:47 AM, Steven Watanabe wrote:
AMDG
Timothy Madden wrote:
To write a library to add a POSIX emulation layer on Windows, is there a way to add symbols from my library to C/C++ standard library headers, without getting into recursive inclusion ?
Boost.TR1 does this and it's a horrible mess that only works most of the time.
Thank you. I checked how TR1 achieves this functionality. Very ingenious: - check that the standard header <cstdio> is placed in a directory named include/, so the full pathname of the standard header would end in .../include/cstdio - put my own headers in an directory named libposix/ - to get the standard header just #include <../include/cstdio> Since my header would be in <../libposix/cstdio>, there is no recursion problem any more Indeed, you were right, "it is a horrible mess that only works most of the time", for example if some other library wants to use the same trick (like Boost.TR1) to build something on top of my <cstdio>, than the other library needs to know about <../libposix/cstdio>, or else it will effectively get my symbols out of <cstdio>. Also if the compiler implementation changes the name of the include directory with the standard <cstdio>, then <../libposix/cstdio> no longer works, but I guess that would be the case anyway because of content changes that come with a new compiler implementation. Thank you, Timothy Madden