76981461ce
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
77 lines
2.9 KiB
C
77 lines
2.9 KiB
C
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: include/wx/beforestd.h
|
|
// Purpose: #include before STL headers
|
|
// Author: Vadim Zeitlin
|
|
// Modified by:
|
|
// Created: 07/07/03
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2003 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
/**
|
|
Unfortunately, when compiling at maximum warning level, the standard
|
|
headers themselves may generate warnings -- and really lots of them. So
|
|
before including them, this header should be included to temporarily
|
|
suppress the warnings and after this the header afterstd.h should be
|
|
included to enable them back again.
|
|
|
|
Note that there are intentionally no inclusion guards in this file, because
|
|
it can be included several times.
|
|
*/
|
|
|
|
// VC 7.x isn't as bad as VC6 and doesn't give these warnings but eVC (which
|
|
// defines _MSC_VER as 1201) does need to be included as it's VC6-like
|
|
#if defined(__VISUALC__) && __VISUALC__ <= 1201
|
|
// these warning have to be disabled and not just temporarily disabled
|
|
// because they will be given at the end of the compilation of the
|
|
// current source and there is absolutely nothing we can do about them so
|
|
// disable them before warning(push) below
|
|
|
|
// 'foo': unreferenced inline function has been removed
|
|
#pragma warning(disable:4514)
|
|
|
|
// 'function' : function not inlined
|
|
#pragma warning(disable:4710)
|
|
|
|
// 'id': identifier was truncated to 'num' characters in the debug info
|
|
#pragma warning(disable:4786)
|
|
|
|
// MSVC 5 does not have this
|
|
#if __VISUALC__ > 1100
|
|
// we have to disable (and reenable in afterstd.h) this one because,
|
|
// even though it is of level 4, it is not disabled by warning(push, 1)
|
|
// below for VC7.1!
|
|
|
|
// unreachable code
|
|
#pragma warning(disable:4702)
|
|
|
|
#pragma warning(push, 1)
|
|
#else // VC 5
|
|
// 'expression' : signed/unsigned mismatch
|
|
#pragma warning(disable:4018)
|
|
|
|
// 'identifier' : unreferenced formal parameter
|
|
#pragma warning(disable:4100)
|
|
|
|
// 'conversion' : conversion from 'type1' to 'type2',
|
|
// possible loss of data
|
|
#pragma warning(disable:4244)
|
|
|
|
// C++ language change: to explicitly specialize class template
|
|
// 'identifier' use the following syntax
|
|
#pragma warning(disable:4663)
|
|
#endif
|
|
#endif // VC++ < 7
|
|
|
|
/**
|
|
GCC's visibility support is broken for libstdc++ in some older versions
|
|
(namely Debian/Ubuntu's GCC 4.1, see
|
|
https://bugs.launchpad.net/ubuntu/+source/gcc-4.1/+bug/109262). We fix it
|
|
here by mimicking newer versions' behaviour of using default visibility
|
|
for libstdc++ code.
|
|
*/
|
|
#if defined(HAVE_VISIBILITY) && defined(HAVE_BROKEN_LIBSTDCXX_VISIBILITY)
|
|
#pragma GCC visibility push(default)
|
|
#endif
|