_gcc.h
来自「symbian 上的stl_port进过编译的。」· C头文件 代码 · 共 463 行
H
463 行
/* STLport configuration file * It is internal STLport header - DO NOT include it directly */#define _STLP_COMPILER "gcc"/* Systems having GLIBC installed have different traits */#if defined (__linux__)# ifndef _STLP_USE_GLIBC# define _STLP_USE_GLIBC 1# endif# if defined (__UCLIBC__) && !defined (_STLP_USE_UCLIBC)# define _STLP_USE_UCLIBC 1# endif#endif#if defined (__CYGWIN__) && \ (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3) && !defined (_GLIBCPP_USE_C99)# define _STLP_NO_VENDOR_MATH_L# define _STLP_NO_VENDOR_STDLIB_L#endif#if (__GNUC__ < 3)# define _STLP_NO_VENDOR_STDLIB_L#endif/* We guess if we are using the cygwin distrib that has a special include schema. * There is no way to distinguish a cygwin distrib used in no-cygwin mode from a * mingw install. We are forced to use a configuration option */#if !defined (_STLP_NATIVE_INCLUDE_PATH) && \ (defined (__CYGWIN__) || defined (__MINGW32__) && defined (_STLP_NO_CYGWIN))# if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 3))# define _STLP_NATIVE_INCLUDE_PATH ../../../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__/include/c++# elif defined (_STLP_NO_CYGWIN)# define _STLP_NATIVE_INCLUDE_PATH ../mingw/*# else * Before version gcc 3.4, the cygwin package include path was conform to the * GNU convention which is set later in this file. */# endif#endif#if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 4))/* define for gcc versions before 3.4.0. */# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD#endif/* azov: gcc on lynx have a bug that causes internal * compiler errors when compiling STLport with namespaces turned on. * When the compiler gets better - comment out _STLP_HAS_NO_NAMESPACES */#if defined (__Lynx__) && (__GNUC__ < 3)# define _STLP_HAS_NO_NAMESPACES 1# define _STLP_NO_STATIC_TEMPLATE_DATA 1/* turn off useless warning about including system headers */# define __NO_INCLUDE_WARN__ 1#endif/* Tru64 Unix, AIX, HP : gcc there by default uses native ld and hence cannot auto-instantiate static template data. If you are using GNU ld, please say so in user_config.h header */#if (__GNUC__ < 3) && !defined(_STLP_GCC_USES_GNU_LD) && \ ((defined (__osf__) && defined (__alpha__)) || defined (_AIX) || defined (__hpux) || defined(__amigaos__) )# define _STLP_NO_STATIC_TEMPLATE_DATA#endif#if !defined (_REENTRANT) && (defined (_THREAD_SAFE) || \ (defined (__OpenBSD__) && defined (_POSIX_THREADS)) || \ (defined (__MINGW32__) && defined (_MT)))# define _REENTRANT#endif#if defined (__DJGPP)# define _STLP_RAND48 1# define _NOTHREADS 1# undef _PTHREADS# define _STLP_LITTLE_ENDIAN#endif#if defined (__MINGW32__)/* Mingw32, egcs compiler using the Microsoft C runtime */# define _STLP_VENDOR_GLOBAL_CSTD# undef _STLP_NO_DRAND48# define _STLP_NO_DRAND48# define _STLP_CALL# if defined (_STLP_NEW_PLATFORM_SDK)/* For the moment the Windows SDK coming with Mingw still mimik the old platform SDK. */# undef _STLP_NEW_PLATFORM_SDK# endif#endif /* __MINGW32__ */#if defined (__CYGWIN__) || defined (__MINGW32__)# if !defined (_STLP_USE_STATIC_LIB)# define _STLP_USE_DECLSPEC 1# if !defined (_STLP_USE_DYNAMIC_LIB)# define _STLP_USE_DYNAMIC_LIB# endif# define _STLP_EXPORT_DECLSPEC __declspec(dllexport)# define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)# define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)# endif/* The following is defined independently of _STLP_USE_STATIC_LIB because it is also * used to import symbols from PSDK under MinGW */# define _STLP_IMPORT_DECLSPEC __declspec(dllimport)#endif#if defined (__CYGWIN__) || defined (__MINGW32__) || !(defined (_STLP_USE_GLIBC) || defined (__sun) || defined(__APPLE__))# if !defined (__MINGW32__) && !defined (__CYGWIN__)# define _STLP_NO_NATIVE_MBSTATE_T 1# endif# if !defined (__MINGW32__) || (__GNUC__ < 3) || (__GNUC__ == 3) && (__GNUC_MINOR__ < 4)# define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1# endif# define _STLP_NO_NATIVE_WIDE_STREAMS 1#endif#define _STLP_NORETURN_FUNCTION __attribute__((noreturn))/* Mac OS X is a little different with namespaces and cannot instantiate * static data members in template classes */#if defined (__APPLE__)# if ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3)))/* Mac OS X is missing a required typedef and standard macro */typedef unsigned int wint_t;# endif# define __unix# if (__GNUC__ < 3) /* Mac OS X needs one and only one source file to initialize all static data * members in template classes. Only one source file in an executable or * library can declare instances for such data members, otherwise duplicate * symbols will be generated. */# define _STLP_NO_STATIC_TEMPLATE_DATA# define _STLP_STATIC_CONST_INIT_BUG 1# define _STLP_STATIC_TEMPLATE_DATA 0# define _STLP_WEAK_ATTRIBUTE 1 /* Workaround for the broken Mac OS X C++ preprocessor which cannot handle * parameterized macros in #include statements */# define _STLP_NATIVE_HEADER(header) <../g++/##header##># define _STLP_NATIVE_C_HEADER(header) <../include/##header##># define _STLP_NATIVE_CPP_C_HEADER(header) <../g++/##header##># define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../g++/##header##># define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../g++/##header##># endif /* __GNUC__ < 3 */# define _STLP_NO_LONG_DOUBLE/* Mac OS X needs all "::" scope references to be "std::" */# define _STLP_USE_NEW_C_HEADERS# define _STLP_NO_VENDOR_STDLIB_L#endif /* __APPLE__ */#if defined(__BEOS__) && defined(__INTEL__)# define _STLP_NATIVE_HEADER(header) <../stlport/beos/##header##># define _STLP_NATIVE_C_HEADER(header) <../stlport/beos/##header##># define _STLP_NATIVE_CPP_C_HEADER(header) <../stlport/beos/##header##># define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../stlport/beos/##header##># define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../stlport/beos/##header##># define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1# define _STLP_NO_NATIVE_WIDE_STREAMS 1/*# define _NOTHREADS 1*/# ifdef _PTHREADS# undef _PTHREADS# endif# ifdef _STLP_PTHREADS# undef _STLP_PTHREADS# endif# define _STLP_USE_STDIO_IO 1# define _STLP_USE_GLIBC 1#endif/* g++ 2.7.x and above */#define _STLP_LONG_LONG long long#ifdef _STLP_USE_UCLIBC/*# ifndef __DO_C99_MATH__*/ /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */# define _STLP_NO_VENDOR_MATH_F /* No *l math fuctions variants (i.e. sqrtl, fabsl, etc.) */# define _STLP_NO_VENDOR_MATH_L# define _STLP_NO_LONG_DOUBLE/*# endif*/#endif#if defined (__OpenBSD__) || defined (__FreeBSD__)# define _STLP_NO_VENDOR_MATH_L# define _STLP_NO_VENDOR_STDLIB_L /* no llabs */# ifndef __unix# define __unix# endif#endif#if defined (__alpha__)# define _STLP_NO_VENDOR_MATH_L# define _STLP_NO_IEC559_SUPPORT#endif#if defined (__hpux)# define _STLP_NO_VENDOR_STDLIB_L /* no llabs */ /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */# define _STLP_NO_VENDOR_MATH_F#endif#if (__GNUC__ >= 3)# ifndef _STLP_HAS_NO_NEW_C_HEADERS/*# ifndef _STLP_USE_UCLIBC*/# define _STLP_HAS_NATIVE_FLOAT_ABS/*# endif*/# else# ifdef _STLP_USE_GLIBC# define _STLP_VENDOR_LONG_DOUBLE_MATH 1# endif# endif#endif#if (__GNUC__ < 3)# define _STLP_HAS_NO_NEW_C_HEADERS 1# define _STLP_VENDOR_GLOBAL_CSTD 1# define _STLP_DONT_USE_PTHREAD_SPINLOCK 1# ifndef __HONOR_STD# define _STLP_VENDOR_GLOBAL_EXCEPT_STD 1# endif/* egcs fails to initialize builtin types in expr. like this : new(p) char(); */# define _STLP_DEF_CONST_PLCT_NEW_BUG 1#endif/*#define _STLP_VENDOR_GLOBAL_CSTD 1*/#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)# define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT# define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT# define _STLP_DEF_CONST_DEF_PARAM_BUG 1#else# undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT# undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT#endif#if (__GNUC_MINOR__ < 9) && (__GNUC__ < 3) /* gcc 2.8 */# define _STLP_NO_TEMPLATE_CONVERSIONS# define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1# define _STLP_NO_FRIEND_TEMPLATES 1# define _STLP_HAS_NO_NAMESPACES 1# define _STLP_NO_METHOD_SPECIALIZATION 1# define _STLP_NO_MEMBER_TEMPLATES 1# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1# define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS/* DJGPP doesn't seem to implement it in 2.8.x */# ifdef DJGPP# define _STLP_NO_STATIC_TEMPLATE_DATA 1# endif#endif#if __GNUC__ <= 2 && __GNUC_MINOR__ <= 7 && !defined (__CYGWIN32__)/* Will it work with 2.6 ? I doubt it. */# if ( __GNUC_MINOR__ < 6 )__GIVE_UP_WITH_STL(GCC_272);# endif# define _STLP_NO_RELOPS_NAMESPACE# define _STLP_NON_TYPE_TMPL_PARAM_BUG# define _STLP_LIMITED_DEFAULT_TEMPLATES 1# define _STLP_DEFAULT_TYPE_PARAM 1# define _STLP_NO_BAD_ALLOC# define _STLP_NO_ARROW_OPERATOR 1# ifndef _STLP_NO_STATIC_TEMPLATE_DATA# define _STLP_NO_STATIC_TEMPLATE_DATA# endif# define _STLP_STATIC_CONST_INIT_BUG 1# define _STLP_NO_METHOD_SPECIALIZATION 1# if !defined (__CYGWIN32__)# define _STLP_NESTED_TYPE_PARAM_BUG 1# define _STLP_BASE_MATCH_BUG 1/* unused operators are required (forward) */# define _STLP_CONST_CONSTRUCTOR_BUG# define _STLP_NO_DEFAULT_NON_TYPE_PARAM# endif# define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1# define _STLP_NO_EXCEPTION_HEADER 1#else /* ! <= 2.7.* */#endif /* ! <= 2.7.* *//* static template data members workaround strategy for gcc tries * to use weak symbols. * if you don't want to use that, #define _STLP_WEAK_ATTRIBUTE=0 ( you'll * have to put "#define __PUT_STATIC_DATA_MEMBERS_HERE" line in one of your * compilation unit ( or CFLAGS for it ) _before_ including any STL header ). */#if defined (_STLP_NO_STATIC_TEMPLATE_DATA) && ! defined (_STLP_WEAK_ATTRIBUTE )/* systems using GNU ld or format that supports weak symbols may use "weak" attribute Linux & Solaris ( x86 & SPARC ) are being auto-recognized here */# if defined(_STLP_GNU_LD) || defined(__ELF__) || defined (__CYGWIN__) || \ (( defined (__SVR4) || defined ( __svr4__ )) && \ ( defined (sun) || defined ( __sun__ )))# define _STLP_WEAK_ATTRIBUTE 1# endif#endif /* _STLP_WEAK_ATTRIBUTE *//* strict ANSI prohibits "long long" ( gcc) */#if defined ( __STRICT_ANSI__ )# undef _STLP_LONG_LONG/*# define _STLP_STRICT_ANSI 1*/#endif/*#if !defined (__STRICT_ANSI__) || defined (__BUILDING_STLPORT)# define _STLP_USE_TEMPLATE_EXPORT# define _STLP_EXPORT_TEMPLATE_KEYWORD extern# define _STLP_IMPORT_TEMPLATE_KEYWORD extern#endif*/#ifndef __EXCEPTIONS# undef _STLP_DONT_USE_EXCEPTIONS# define _STLP_DONT_USE_EXCEPTIONS 1#endif#if (__GNUC__ >= 3)# if !defined (_STLP_NATIVE_INCLUDE_PATH)# if ( (__GNUC__ == 3 ) && ((__GNUC_MINOR__ == 0) || ((__GNUC_MINOR__ < 3) && defined(__APPLE_CC__))))# define _STLP_NATIVE_INCLUDE_PATH ../g++-v3# else# if ( ((__GNUC__ == 4 ) || (__GNUC_MINOR__ >= 3)) && defined(__APPLE_CC__))# define _STLP_NATIVE_INCLUDE_PATH ../c++/** Before version 3.4.0 the 0 patch level was not part of the include path:*/# elif defined (__GNUC_PATCHLEVEL__) && ((__GNUC_PATCHLEVEL__ > 0) || \ (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ (__GNUC__ > 3))# define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__# else# define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__# endif# endif# endif/* Instantiation scheme that used (default) in gcc 3 made void of sense explicit instantiation within library: nothing except increased library size. - ptr */# define _STLP_NO_FORCE_INSTANTIATE#elif (__GNUC_MINOR__ < 8)# if !defined (_STLP_NATIVE_INCLUDE_PATH)# define _STLP_NATIVE_INCLUDE_PATH ../g++-include# endif/* tuning of static template data members workaround */# if ( _STLP_STATIC_TEMPLATE_DATA < 1 )# if ( _STLP_WEAK_ATTRIBUTE > 0 )# define _STLP_WEAK __attribute__ (( weak ))# else# define _STLP_WEAK# endif /* _STLP_WEAK_ATTRIBUTE */# ifdef __PUT_STATIC_DATA_MEMBERS_HERE# define __DECLARE_INSTANCE(type,item,init) type item _STLP_WEAK init# else# define __DECLARE_INSTANCE(type,item,init)# endif /* __PUT_STATIC_DATA_MEMBERS_HERE */# endif /* _STLP_STATIC_TEMPLATE_DATA */#else/* gcc-2.95.0 used to use "g++-3" directory which has been changed to "g++" in * system-dependent "include" for 2.95.2 except for Cygwin and Mingw packages. * I expect "g++-3" not being used in later releases. * If your installation use "g++-3" include directory for any reason (pre-2.95.2 or Win binary kit), * please change the macro below to point to your directory. */# if !defined (_STLP_NATIVE_INCLUDE_PATH)# if defined(__DJGPP)# define _STLP_NATIVE_INCLUDE_PATH ../lang/cxx# elif (__GNUC__ >= 3) || (__GNUC_MINOR__ >= 97)# define _STLP_NATIVE_INCLUDE_PATH ../include/g++-v3# elif ((__GNUC_MINOR__ >= 95 && __GNUC_MINOR__ < 97) && \ !( defined (__FreeBSD__) || defined (__NetBSD__) || defined(__sgi) || defined (__OS2__) ) )# define _STLP_NATIVE_INCLUDE_PATH ../g++-3# elif (__GNUC_MINOR__ > 8) && (__GNUC_MINOR__ < 95) && (__GNUC__ < 3) && !defined( __Lynx__ )/* this really sucks, as GNUpro does not really identifies itself, so we have to guess * depending on a platform */# ifdef __hpux# define _STLP_NATIVE_INCLUDE_PATH ../g++-3# else# define _STLP_NATIVE_INCLUDE_PATH ../g++-2# endif# else# define _STLP_NATIVE_INCLUDE_PATH g++# endif# endif/* <exception> et al */# ifdef __FreeBSD__# if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ > 95)# define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include# endif# else/* azov */# ifndef __Lynx__# if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)/*# define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../g++-v3*/# else# define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include# endif# endif# endif#endif /* GNUC_MINOR < 8 */#if !defined (_STLP_NATIVE_C_INCLUDE_PATH)# define _STLP_NATIVE_C_INCLUDE_PATH ../include#endif/* Tune settings for the case where static template data members are not * instaniated by default */#if defined ( _STLP_NO_STATIC_TEMPLATE_DATA )# define _STLP_STATIC_TEMPLATE_DATA 0# if !defined ( _STLP_WEAK_ATTRIBUTE )# define _STLP_WEAK_ATTRIBUTE 0# endif# ifdef __PUT_STATIC_DATA_MEMBERS_HERE# define __DECLARE_INSTANCE(type,item,init) type item init# else# define __DECLARE_INSTANCE(type,item,init)# endif#else# define _STLP_STATIC_TEMPLATE_DATA 1#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?