My next patch is an overhaul of autostatic.c that adds support for older MSVC versions, fixes the no-init bug in small-static builds, and smooths out a number of rough edges. ++ autostatic.c * Move the #includes up to the top, in case PTW32_STATIC_LIB is defined in a header file (and a later patch from me will need a symbol from implement.h early on) * Added a big fat comment documenting the pre/post-main() black magic and the anchoring business * The init/exit routines are supposed to return int, not void, and return a value of 0 to indicate "no error" (see the "Addendum: int Instead of void" section in the Codeguru article) * I got rid of the attribute_section() macro (in favor of writing things out longhand) because it's not enough to abstract away all the differences between the various forms of declarations needed (for example, #pragma is needed in some cases, and that can't be stuffed into a macro (and __pragma() isn't supported by older MSVC versions)) * The way that MSVC pre/post-main() black magic is done changed in 8.0, so the code now implements the "old" and "new" ways. I've tested that this works for everything back to MSVC6. * Added a bit at the end to avoid warnings when PTW32_STATIC_LIB is not defined in non-inlined builds ++ implement.h * This bit sticks a reference to autostatic.obj into every object file, so that the linker won't optimize it away (for "small static" builds) --Daniel -- Daniel Richard G. || danielg@teragram.com || Software Developer Teragram Linguistic Technologies (a division of SAS) http://www.teragram.com/