visualc.hpp

Go to the documentation of this file.
00001 //  (C) Copyright John Maddock 2001 - 2003. 
00002 //  (C) Copyright Darin Adler 2001 - 2002. 
00003 //  (C) Copyright Peter Dimov 2001. 
00004 //  (C) Copyright Aleksey Gurtovoy 2002. 
00005 //  (C) Copyright David Abrahams 2002 - 2003. 
00006 //  (C) Copyright Beman Dawes 2002 - 2003. 
00007 //  Use, modification and distribution are subject to the 
00008 //  Boost Software License, Version 1.0. (See accompanying file 
00009 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
00010 
00011 //  See http://www.boost.org for most recent version.
00012 
00013 //  Microsoft Visual C++ compiler setup:
00014 
00015 #define BOOST_MSVC _MSC_VER
00016 
00017 // turn off the warnings before we #include anything
00018 #pragma warning( disable : 4503 ) // warning: decorated name length exceeded
00019 
00020 #if _MSC_VER < 1300  // 1200 == VC++ 6.0, 1200-1202 == eVC++4
00021 #  pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
00022 #  define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
00023 #  define BOOST_NO_VOID_RETURNS
00024 #  define BOOST_NO_EXCEPTION_STD_NAMESPACE
00025    // disable min/max macro defines on vc6:
00026    //
00027 #endif
00028 
00029 #if (_MSC_VER <= 1300)  // 1300 == VC++ 7.0
00030 
00031 #  if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS)      // VC7 bug with /Za
00032 #    define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
00033 #  endif
00034 
00035 #  define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
00036 #  define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
00037 #  define BOOST_NO_PRIVATE_IN_AGGREGATE
00038 #  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
00039 #  define BOOST_NO_INTEGRAL_INT64_T
00040 #  define BOOST_NO_DEDUCED_TYPENAME
00041 #  define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
00042 
00043 //    VC++ 6/7 has member templates but they have numerous problems including
00044 //    cases of silent failure, so for safety we define:
00045 #  define BOOST_NO_MEMBER_TEMPLATES
00046 //    For VC++ experts wishing to attempt workarounds, we define:
00047 #  define BOOST_MSVC6_MEMBER_TEMPLATES
00048 
00049 #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
00050 #  define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
00051 #  define BOOST_NO_CV_VOID_SPECIALIZATIONS
00052 #  define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
00053 #  define BOOST_NO_USING_TEMPLATE
00054 #  define BOOST_NO_SWPRINTF
00055 #  define BOOST_NO_TEMPLATE_TEMPLATES
00056 #  define BOOST_NO_SFINAE
00057 #  define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
00058 #  define BOOST_NO_IS_ABSTRACT
00059 // TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
00060 #  if (_MSC_VER > 1200)
00061 #     define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
00062 #  endif
00063 
00064 #endif
00065 
00066 #if _MSC_VER < 1310 // 1310 == VC++ 7.1
00067 #  define BOOST_NO_SWPRINTF
00068 #endif
00069 
00070 #if _MSC_VER <= 1400  // 1400 == VC++ 8.0
00071 #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
00072 #endif
00073 
00074 #ifndef _NATIVE_WCHAR_T_DEFINED
00075 #  define BOOST_NO_INTRINSIC_WCHAR_T
00076 #endif
00077 
00078 #ifdef _WIN32_WCE
00079 #  define BOOST_NO_THREADEX
00080 #  define BOOST_NO_GETSYSTEMTIMEASFILETIME
00081 #endif
00082 
00083 //   
00084 // check for exception handling support:   
00085 #ifndef _CPPUNWIND   
00086 #  define BOOST_NO_EXCEPTIONS   
00087 #endif 
00088 
00089 //
00090 // __int64 support:
00091 //
00092 #if (_MSC_VER >= 1200)
00093 #   define BOOST_HAS_MS_INT64
00094 #endif
00095 #if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS)
00096 #   define BOOST_HAS_LONG_LONG
00097 #endif
00098 //
00099 // disable Win32 API's if compiler extentions are
00100 // turned off:
00101 //
00102 #ifndef _MSC_EXTENSIONS
00103 #  define BOOST_DISABLE_WIN32
00104 #endif
00105 
00106 //
00107 // all versions support __declspec:
00108 //
00109 #define BOOST_HAS_DECLSPEC
00110 //
00111 // prefix and suffix headers:
00112 //
00113 #ifndef BOOST_ABI_PREFIX
00114 #  define BOOST_ABI_PREFIX "sysc/packages/boost/config/abi/msvc_prefix.hpp"
00115 #endif
00116 #ifndef BOOST_ABI_SUFFIX
00117 #  define BOOST_ABI_SUFFIX "sysc/packages/boost/config/abi/msvc_suffix.hpp"
00118 #endif
00119 
00120 // TODO:
00121 // these things are mostly bogus. 1200 means version 12.0 of the compiler. The 
00122 // artificial versions assigned to them only refer to the versions of some IDE
00123 // these compilers have been shipped with, and even that is not all of it. Some
00124 // were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
00125 // IOW, you can't use these 'versions' in any sensible way. Sorry.
00126 # if defined(UNDER_CE)
00127 #   if _MSC_VER < 1200
00128       // Note: these are so far off, they are not really supported
00129 #   elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202
00130 #     define BOOST_COMPILER_VERSION evc4.0
00131 #     error unknown CE compiler
00132 #   else
00133 #     error unknown CE compiler
00134 #   endif
00135 # else
00136 #   if _MSC_VER < 1200
00137       // Note: these are so far off, they are not really supported
00138 #     define BOOST_COMPILER_VERSION 5.0
00139 #   elif _MSC_VER < 1300
00140 #       define BOOST_COMPILER_VERSION 6.0
00141 #   elif _MSC_VER == 1300
00142 #     define BOOST_COMPILER_VERSION 7.0
00143 #   elif _MSC_VER == 1310
00144 #     define BOOST_COMPILER_VERSION 7.1
00145 #   elif _MSC_VER == 1400
00146 #     define BOOST_COMPILER_VERSION 8.0
00147 #   else
00148 #     define BOOST_COMPILER_VERSION _MSC_VER
00149 #   endif
00150 # endif
00151 
00152 #define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
00153 
00154 //
00155 // versions check:
00156 // we don't support Visual C++ prior to version 6:
00157 #if _MSC_VER < 1200
00158 #error "Compiler not supported or configured - please reconfigure"
00159 #endif
00160 //
00161 // last known and checked version is 1400 (VC8):
00162 #if (_MSC_VER > 1400)
00163 #  if defined(BOOST_ASSERT_CONFIG)
00164 #     error "Unknown compiler version - please run the configure tests and report the results"
00165 #  else
00166 #     pragma message("Unknown compiler version - please run the configure tests and report the results")
00167 #  endif
00168 #endif

Generated on Wed Jan 21 15:32:09 2009 for SystemC by  doxygen 1.5.5