
Hello, I have been compiling boost::polygon under Windows (VS2008, MSVC9.0 specifically) and have run into a minor problem with boost::polygon's detection of Microsoft's compiler. Specifically, it tests for the WIN32 preprocessor define instead of _WIN32. WIN32 isn't actually defined by the compiler, but by windows.h, and not all translation units actually need to include that header. _WIN32 is defined by the compiler, and boost has the similar BOOST_MSVC preprocessor define which could also be used. While there is some disagreement among the existing boost libraries about the best mechanism to check this, some check _WIN32, some check BOOST_MSVC, and some check both or others at the same time. I propose the following patch to the 1.45.0 boost::polygon sources to make the detection of the MSVC compiler more robust. Regards, Josh Pieper Index: boost/polygon/gtl.hpp =================================================================== --- boost/polygon/gtl.hpp +++ boost/polygon/gtl.hpp @@ -12,7 +12,7 @@ #pragma warning (disable:1125) #endif -#ifdef WIN32 +#ifdef _WIN32 #pragma warning( disable: 4996 ) #pragma warning( disable: 4800 ) #endif Index: polygon/isotropy.hpp =================================================================== --- boost/polygon/isotropy.hpp +++ boost/polygon/isotropy.hpp @@ -48,7 +48,7 @@ #include <boost/mpl/or.hpp> #else -#ifdef WIN32 +#ifdef _WIN32 #define BOOST_POLYGON_MSVC #endif #ifdef __ICC @@ -290,7 +290,7 @@ template <typename T> struct gtl_if { -#ifdef WIN32 +#ifdef _WIN32 typedef gtl_no type; #endif };