📄 stl_config.h
字号:
/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Hewlett-Packard Company makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * Copyright (c) 1997 * Silicon Graphics * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Silicon Graphics makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * */#ifndef __STL_CONFIG_H# define __STL_CONFIG_H// What this file does.// (1) Defines bool, true, and false if the compiler doesn't do so already.// (2) Defines __STL_NO_DRAND48 if the compiler's standard library does// not support the drand48() function.// (3) Defines __STL_STATIC_TEMPLATE_MEMBER_BUG if the compiler can't // handle static members of template classes.// (4) Defines 'typename' as a null macro if the compiler does not support// the typename keyword.// (5) Defines __STL_CLASS_PARTIAL_SPECIALIZATION if the compiler // supports partial specialization of class templates.// (6) Defines __STL_FUNCTION_TMPL_PARTIAL_ORDER if the compiler supports// partial ordering of function templates (a.k.a partial specialization// of function templates.// (7) Defines __STL_EXPLICIT_FUNCTION_TMPL_ARGS if the compiler// supports calling a function template by providing its template// arguments explicitly.// (8) Defines __STL_MEMBER_TEMPLATES if the compiler supports// template members of classes.// (9) Defines 'explicit' as a null macro if the compiler does not support// the explicit keyword. // (10) Defines __STL_LIMITED_DEFAULT_TEMPLATES if the compiler is// unable to handle default template parameters that depend on// previous template parameters.// (11) Defines __STL_NON_TYPE_TMPL_PARAM_BUG if the compiler has // trouble performing function template argument deduction for// non-type template parameters.// (12) Defines __SGI_STL_NO_ARROW_OPERATOR if the compiler is unable// to support the -> operator for iterators.// (13) Defines __STL_USE_EXCEPTIONS if the compiler (in the current// compilation mode) supports exceptions.// (14) Define __STL_USE_NAMESPACES if we're putting the STL into a // namespace. // (15) Defines __STL_SGI_THREADS if this is being compiled on an SGI// compiler, and if the user hasn't selected pthreads or no threads// instead.// (16) Defines __STL_WIN32THREADS if this is being compiled on a // WIN32 compiler in multithreaded mode.// (17) Define namespace-related macros (__STD, __STL_BEGIN_NAMESPACE, etc.)// apropriately.// (18) Define exception-related macros (__STL_TRY, __STL_UNWIND, etc.)// appropriately.// (19) Defines __stl_assert either as a test or as a null macro,// depending on whether or not __STL_ASSERTIONS is defined.#ifdef _PTHREADS# define __STL_PTHREADS#endif# if defined(__sgi) && !defined(__GNUC__)# if !defined(_BOOL)# define __STL_NEED_BOOL# endif# if !defined(_TYPENAME_IS_KEYWORD)# define __STL_NEED_TYPENAME# endif# ifdef _PARTIAL_SPECIALIZATION_OF_CLASS_TEMPLATES# define __STL_CLASS_PARTIAL_SPECIALIZATION# endif# ifdef _MEMBER_TEMPLATES# define __STL_MEMBER_TEMPLATES# endif# if !defined(_EXPLICIT_IS_KEYWORD)# define __STL_NEED_EXPLICIT# endif# ifdef __EXCEPTIONS# define __STL_USE_EXCEPTIONS# endif# if (_COMPILER_VERSION >= 721) && defined(_NAMESPACES)# define __STL_USE_NAMESPACES# endif # if !defined(_NOTHREADS) && !defined(__STL_PTHREADS)# define __STL_SGI_THREADS# endif# endif# ifdef __GNUC__# include <_G_config.h># if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)# define __STL_STATIC_TEMPLATE_MEMBER_BUG# define __STL_NEED_TYPENAME# define __STL_NEED_EXPLICIT# else# define __STL_CLASS_PARTIAL_SPECIALIZATION# define __STL_FUNCTION_TMPL_PARTIAL_ORDER# define __STL_EXPLICIT_FUNCTION_TMPL_ARGS# define __STL_MEMBER_TEMPLATES# endif /* glibc pre 2.0 is very buggy. We have to disable thread for it. It should be upgraded to glibc 2.0 or later. */# if !defined(_NOTHREADS) && __GLIBC__ >= 2 && defined(_G_USING_THUNKS)# define __STL_PTHREADS# endif# ifdef __EXCEPTIONS# define __STL_USE_EXCEPTIONS# endif# endif# if defined(__SUNPRO_CC) # define __STL_NEED_BOOL# define __STL_NEED_TYPENAME# define __STL_NEED_EXPLICIT# define __STL_USE_EXCEPTIONS# endif# if defined(__COMO__)# define __STL_MEMBER_TEMPLATES# define __STL_CLASS_PARTIAL_SPECIALIZATION# define __STL_USE_EXCEPTIONS# define __STL_USE_NAMESPACES# endif# if defined(_MSC_VER)# if _MSC_VER > 1000# include <yvals.h># else# define __STL_NEED_BOOL# endif# define __STL_NO_DRAND48# define __STL_NEED_TYPENAME# if _MSC_VER < 1100# define __STL_NEED_EXPLICIT# endif# define __STL_NON_TYPE_TMPL_PARAM_BUG# define __SGI_STL_NO_ARROW_OPERATOR# ifdef _CPPUNWIND# define __STL_USE_EXCEPTIONS# endif# ifdef _MT# define __STL_WIN32THREADS# endif# endif# if defined(__BORLANDC__)# define __STL_NO_DRAND48# define __STL_NEED_TYPENAME# define __STL_LIMITED_DEFAULT_TEMPLATES# define __SGI_STL_NO_ARROW_OPERATOR# define __STL_NON_TYPE_TMPL_PARAM_BUG# ifdef _CPPUNWIND# define __STL_USE_EXCEPTIONS# endif# ifdef __MT__# define __STL_WIN32THREADS# endif# endif# if defined(__STL_NEED_BOOL) typedef int bool;# define true 1# define false 0# endif# ifdef __STL_NEED_TYPENAME# define typename# endif# ifdef __STL_NEED_EXPLICIT# define explicit# endif# ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS# define __STL_NULL_TMPL_ARGS <># else# define __STL_NULL_TMPL_ARGS# endif# ifdef __STL_CLASS_PARTIAL_SPECIALIZATION# define __STL_TEMPLATE_NULL template<># else# define __STL_TEMPLATE_NULL# endif// __STL_NO_NAMESPACES is a hook so that users can disable namespaces// without having to edit library headers.# if defined(__STL_USE_NAMESPACES) && !defined(__STL_NO_NAMESPACES)# define __STD std# define __STL_BEGIN_NAMESPACE namespace std {# define __STL_END_NAMESPACE }# define __STL_USE_NAMESPACE_FOR_RELOPS# define __STL_BEGIN_RELOPS_NAMESPACE namespace std {# define __STL_END_RELOPS_NAMESPACE }# define __STD_RELOPS std# else# define __STD # define __STL_BEGIN_NAMESPACE # define __STL_END_NAMESPACE # undef __STL_USE_NAMESPACE_FOR_RELOPS# define __STL_BEGIN_RELOPS_NAMESPACE # define __STL_END_RELOPS_NAMESPACE # define __STD_RELOPS # endif# ifdef __STL_USE_EXCEPTIONS# define __STL_TRY try# define __STL_CATCH_ALL catch(...)# define __STL_RETHROW throw# define __STL_NOTHROW throw()# define __STL_UNWIND(action) catch(...) { action; throw; }# else# define __STL_TRY # define __STL_CATCH_ALL if (false)# define __STL_RETHROW # define __STL_NOTHROW # define __STL_UNWIND(action) # endif#ifdef __STL_ASSERTIONS# include <stdio.h># define __stl_assert(expr) \ if (!(expr)) { fprintf(stderr, "%s:%d STL assertion failure: %s\n", \ __FILE__, __LINE__, # expr); abort(); }#else# define __stl_assert(expr)#endif#endif /* __STL_CONFIG_H */// Local Variables:// mode:C++// End:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -