_evc.h
来自「stl的源码」· C头文件 代码 · 共 334 行
H
334 行
/* * File to have Microsoft eMbedded Visual C++ 3.0 and .NET working with STLport * May 2004 * Origin : Zdenek Nemec - zero@mapfactor.com * Michael Fink - vividos@users.sourceforge.net */#ifndef _STLP_EVC_H#define _STLP_EVC_H#define _STLP_COMPILER "eMbedded Visual C++"// This flag is being used by STLport to support// old-fashioned Windows CE SDK (see stl_wince.h)// do not use with eMebedded Visual C++ 3 or 4!#ifdef _STLP_WINCE# undef _STLP_WINCE#endif/* Compiler dependent define. The following defines may be available: * _STLP_WCE_EVC3 when compiling under eMbedded Visual C++ 3 * _STLP_WCE_NET when compiling under eMbedded Visual C++ .NET * _STLP_WCE always defined when compiling with one of the above */#undef _STLP_WCE_EVC3#undef _STLP_WCE_NET#if (_WIN32_WCE > 300)# define _STLP_WCE_NET UNDER_CE#elif (_WIN32_WCE == 300)# define _STLP_WCE_EVC3 UNDER_CE#else# error No support for Windows CE below 3.0!#endif// This is defined for all platforms using Windows CE#define _STLP_WCE/* All Windows CE versions up to at least version 5 are little-endian, even * if the hardware (like e.g. MIPS) can be configured for big-endian, too. */#define _STLP_LITTLE_ENDIAN// Ensure _DEBUG is defined.#if defined (DEBUG) && !defined (_DEBUG)# define _DEBUG#endif// inherit all msvc6 options#include <stl/config/_msvc.h>// CE up to at least version 5 has no C locale support#define _STLP_NO_LOCALE_SUPPORT#if _WIN32_WCE >= 420 // SDKs built with PB5 have terminate&co in namespace std...# define _STLP_VENDOR_TERMINATE_STD _STLP_VENDOR_STD# define _STLP_VENDOR_UNCAUGHT_EXCEPTION_STD _STLP_VENDOR_STD // ...and new_handler/set_new_handler in the global namespace.# define _STLP_GLOBAL_NEW_HANDLER 1#endif// Always threaded in eMbedded Visual C++ 3.0 and .NET#ifndef _MT# define _MT#endif// we don't have a static native runtime library#undef _STLP_USING_CROSS_NATIVE_RUNTIME_LIB#if _WIN32_WCE < 400// no long double under CE3 and older# define _STLP_NO_LONG_DOUBLE#endif// no *f and *l math functions available#define _STLP_NO_VENDOR_MATH_F#define _STLP_NO_VENDOR_MATH_L/* * Redirect cout, cerr and clog: * If defined redirect cout, cerr and clog to * files stdout.txt, stderr.txt and stdlog.txt *///# define _STLP_REDIRECT_STDSTREAMS/* * Static class members may generate LNK1179: * Wrong COMDAT packing may cause LNK1179 error. * For details see http://groups.google.com/groups?th=8a05c82c4ffee280 * example P78. This define is not used/needed at this moment * but may came handy in future... *///# define _STLP_STATIC_MEMBERS_BUG// Use wide-string interface of windows native functions (CreateFile...).// Note that this should be defined all the time while under CE.#if defined (UNICODE)# define _STLP_USE_WIDE_INTERFACE#endif// Force exception std to std instead of __std_alias.#if defined (__cplusplus) && !defined (_STLP_HAS_NO_NAMESPACES)# ifdef _STLP_VENDOR_EXCEPT_STD# undef _STLP_VENDOR_EXCEPT_STD# endif# define _STLP_VENDOR_EXCEPT_STD std#endif// short string optimization bug under evc3, evc4 using ARM compiler#if _MSC_VER < 1400 && (defined (ARM) || defined (_ARM_))# define _STLP_DONT_USE_SHORT_STRING_OPTIM#endif// when using MFC, disable another placement new declaration, since there is one in wcealt.h#if !defined (__BUILDING_STLPORT) && defined (_MFC_VER)# define __PLACEMENT_NEW_INLINE#endif// threads#undef _REENTRANT#define _REENTRANT#undef _NOTHREADS// Use old fashioned headers (ctime vs. time.h).#undef _STLP_NO_NEW_C_HEADERS#define _STLP_NO_NEW_C_HEADERS// exception handling support: only on evc4 and user added /GX to project settings#if defined (_STLP_WCE_EVC3) || !defined (_CPPUNWIND)# define _STLP_NO_EXCEPTION_HEADER# define _STLP_NO_EXCEPTIONS# undef _STLP_USE_EXCEPTIONS# ifndef _STLP_THROW_BAD_ALLOC# define _STLP_THROW_BAD_ALLOC { _STLP_WINCE_TRACE(L"out of memory"); ExitThread(1); }# endif#endif#define _STLP_WINCE_TRACE(msg) OutputDebugString(msg)/* * eMbedded Visual C++ .NET specific settings */#if defined (_STLP_WCE_NET)// evc4 has no locale and time support# define _STLP_NO_LOCALE_SUPPORT# define _STLP_NO_TIME_SUPPORT// ptrdiff_t is not defined in evc4 headers# ifndef _PTRDIFF_T_DEFINED typedef int ptrdiff_t;# define _PTRDIFF_T_DEFINED# endif/* * Helper macros for including the native headers in cases where a file with * the same name also exists in the STLport include folder. The idea behind * this is that we first go up one directory and then down into a dir that * is only present in the native install but not in STLport. * */# if !defined (_STLP_NATIVE_INCLUDE_PATH)# if defined (_X86_)# if defined (_STLP_WCE_TARGET_PROC_SUBTYPE_EMULATOR)# define _STLP_NATIVE_INCLUDE_PATH ../Emulator# else# define _STLP_NATIVE_INCLUDE_PATH ../X86# endif# elif defined (_ARM_)# if _MSC_VER < 1400 // eVC3/4# if defined (ARMV4)# define _STLP_NATIVE_INCLUDE_PATH ../Armv4# elif defined (ARMV4I)# define _STLP_NATIVE_INCLUDE_PATH ../Armv4i# elif defined (ARMV4T)# define _STLP_NATIVE_INCLUDE_PATH ../Armv4t# else# error Unknown ARM SDK.# endif# else // VC8 crosscompiling for CE# if defined (ARMV4) // VC8 bundled Pocket PC 2003 SDK don't have a target CPU subfolder.# if defined(WIN32_PLATFORM_PSPC)# define _STLP_NATIVE_INCLUDE_PATH ../Include# else# define _STLP_NATIVE_INCLUDE_PATH ../Armv4# endif# elif defined(ARMV4I) || defined(ARMV4T)# define _STLP_NATIVE_INCLUDE_PATH ../Armv4i# else# error Unknown ARM SDK.# endif# endif# elif defined (_MIPS_)# if defined (MIPS16)# define _STLP_NATIVE_INCLUDE_PATH ../mips16# elif defined (MIPSII)# define _STLP_NATIVE_INCLUDE_PATH ../mipsII# elif defined (MIPSII_FP)# define _STLP_NATIVE_INCLUDE_PATH ../mipsII_fp# elif defined (MIPSIV)# define _STLP_NATIVE_INCLUDE_PATH ../mipsIV# elif defined (MIPSIV_FP)# define _STLP_NATIVE_INCLUDE_PATH ../mipsIV_fp# else# error Unknown MIPS SDK.# endif# elif defined (SHx)# if defined (SH3)# define _STLP_NATIVE_INCLUDE_PATH ../sh3# elif defined (SH4)# define _STLP_NATIVE_INCLUDE_PATH ../sh4# else# error Unknown SHx SDK.# endif# else# error Unknown SDK.# endif# endif /* !_STLP_NATIVE_INCLUDE_PATH *//* Workaround when using MFCCE and using <new> together: MFCCE's wcealt.h doesn't * check for __PLACEMENT_NEW_INLINE before defining operator new, so when <new> * defines the operatore before, there will be an error C2084: * "function 'void *__cdecl operator new(unsigned int,void *)' already has a body". */# ifdef _STLP_USE_MFC# define __PLACEMENT_NEW_INLINE# endif#endif /* _STLP_WCE_NET *//* * eMbedded Visual C++ 3.0 specific settings */#if defined (_STLP_WCE_EVC3)# define _STLP_NO_NATIVE_MBSTATE_T// evc3 has no locale and time support# define _STLP_NO_LOCALE_SUPPORT# define _STLP_NO_TIME_SUPPORT// evc3 has new, but no explicit header# define _STLP_NO_NEW_HEADER# define _STLP_NO_NEW_NEW_HEADER// evc3 has no bad_alloc and no typeinfo# undef _STLP_NO_BAD_ALLOC# define _STLP_NO_BAD_ALLOC# undef _STLP_NO_TYPEINFO# define _STLP_NO_TYPEINFO// missing things in eMbedded Visual C++ 3.0 headers# ifndef _SIZE_T_DEFINED typedef unsigned int size_t;# define _SIZE_T_DEFINED# endif# ifndef _WCHAR_T_DEFINED typedef unsigned short wchar_t;# define _WCHAR_T_DEFINED# endif// ptrdiff_t is not defined in evc3 headers# ifndef _PTRDIFF_T_DEFINED typedef int ptrdiff_t;# define _PTRDIFF_T_DEFINED# endif// clock_t is not defined in evc3 headers# ifndef _CLOCK_T_DEFINED typedef long clock_t;# define _CLOCK_T_DEFINED# endif// Struct tm is not defined in evc3 headers# ifndef _TM_DEFINEDstruct tm { int tm_sec; /* seconds after the minute - [0,59] */ int tm_min; /* minutes after the hour - [0,59] */ int tm_hour; /* hours since midnight - [0,23] */ int tm_mday; /* day of the month - [1,31] */ int tm_mon; /* months since January - [0,11] */ int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0,6] */ int tm_yday; /* days since January 1 - [0,365] */ int tm_isdst; /* daylight savings time flag */};# define _TM_DEFINED# endif// define placement new and delete operator// note: when MFCCE headers are included first, don't define the new operator,// since it was already defined in wcealt.h# ifdef __cplusplus# ifndef __PLACEMENT_NEW_INLINE# ifndef _MFC_VERinline void *__cdecl operator new(size_t, void *_P) { return (_P); }# endif /* _MFC_VER */inline void __cdecl operator delete(void *, void *) { return; }# define __PLACEMENT_NEW_INLINE# endif# endif /* __cplusplus */// evc3 doesn't have native wide functions, e.g. fgetwc, wmemmove# define _STLP_NO_NATIVE_WIDE_FUNCTIONS// evc3 doesn't have assert.h# ifndef _ASSERT_DEFINED# define assert(expr) _STLP_ASSERT(expr)# define _ASSERT_DEFINED# endif#endif /* _STLP_WCE_EVC3 *//* * original call: TerminateProcess(GetCurrentProcess(), 0); * we substitute the GetCurrentProcess() with the result of the inline function * defined in kfuncs.h, since we then can avoid including <windows.h> at all. * all needed Win32 API functions are defined in <stl/_windows.h> */#ifndef _ABORT_DEFINED# define _STLP_ABORT() TerminateProcess(reinterpret_cast<HANDLE>(66), 0)# define _ABORT_DEFINED#endif// Notice: windows.h isn't included here anymore; all needed defines are in// stl/_windows.h now#endif /* _STLP_EVC_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?