1 /////////////////////////////////////////////////////////////////////////////// 2 // Name: include/wx/beforestd.h 3 // Purpose: #include before STL headers 4 // Author: Vadim Zeitlin 5 // Modified by: 6 // Created: 07/07/03 7 // RCS-ID: $Id: beforestd.h 61871 2009-09-09 22:29:51Z VZ $ 8 // Copyright: (c) 2003 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr> 9 // Licence: wxWindows licence 10 /////////////////////////////////////////////////////////////////////////////// 11 12 /** 13 Unfortunately, when compiling at maximum warning level, the standard 14 headers themselves may generate warnings -- and really lots of them. So 15 before including them, this header should be included to temporarily 16 suppress the warnings and after this the header afterstd.h should be 17 included to enable them back again. 18 19 Note that there are intentionally no inclusion guards in this file, because 20 it can be included several times. 21 */ 22 23 // VC 7.x isn't as bad as VC6 and doesn't give these warnings but eVC (which 24 // defines _MSC_VER as 1201) does need to be included as it's VC6-like 25 #if defined(__VISUALC__) && __VISUALC__ <= 1201 26 // MSVC 5 does not have this 27 #if __VISUALC__ > 1100 28 // we have to disable (and reenable in afterstd.h) this one because, 29 // even though it is of level 4, it is not disabled by warning(push, 1) 30 // below for VC7.1! 31 32 // unreachable code 33 #pragma warning(disable:4702) 34 35 #pragma warning(push, 1) 36 #else // VC 5 37 // 'expression' : signed/unsigned mismatch 38 #pragma warning(disable:4018) 39 40 // 'identifier' : unreferenced formal parameter 41 #pragma warning(disable:4100) 42 43 // 'conversion' : conversion from 'type1' to 'type2', 44 // possible loss of data 45 #pragma warning(disable:4244) 46 47 // C++ language change: to explicitly specialize class template 48 // 'identifier' use the following syntax 49 #pragma warning(disable:4663) 50 #endif 51 52 // these warning have to be disabled and not just temporarily disabled 53 // because they will be given at the end of the compilation of the 54 // current source and there is absolutely nothing we can do about them 55 56 // 'foo': unreferenced inline function has been removed 57 #pragma warning(disable:4514) 58 59 // 'function' : function not inlined 60 #pragma warning(disable:4710) 61 62 // 'id': identifier was truncated to 'num' characters in the debug info 63 #pragma warning(disable:4786) 64 #endif // VC++ < 7 65 66 /* 67 Recent versions of Sun C++ compiler use _T in their standard headers and 68 our definition of it in wx/wxchar.h conflicts with them and breaks 69 compilation, so undefine _T before including them and redefine it back in 70 wx/afterstd.h if needed. 71 */ 72 #if defined(__SUNPRO_CC) || defined(__SUNPRO_C) 73 #undef _T 74 #endif /* SUNCC */ 75 76