📄 envmacro.h
字号:
/* envmacro.h */
/* environment macros defines */
/* CPU type, OS type, Compiler type, Compiler type, 64Bit Mode, ENDIAN type
* and Windows Call Mode
*/
/*
*
* Copyright (c) 2003 Xu Yeli, Created by Yeli Xu
* History:
* Author Date
* -------------------------------------------------
* Yeli Xu 2002-11-29
*
*/
#ifndef __ENVMACRO_H__
#define __ENVMACRO_H__
/***************************************************************************
* ---CPU type---
*
* _TM_UNKNOWN Unknown CPU
* _TM_I386 Intel i386/i486/Pentium (little endian)
* _TM_ALPHA Compaq/Digital Alpha (little endian)
* _TM_SPARC Sun Sparc
* _TM_HPPA HP PA-RISC
*
* ---OS type---
*
* _TM_UNKNOWN Unknown OS
* _TM_WIN 32 or 64 bit Windows
*
* _TM_WINNT Windows NT
* _TM_WIN32 32 bit Windows
* _TM_WIN64 64 bit Windows
*
* _TM_UNIX UNIX
*
* _TM_SOLARIS SUN Solaris
* _TM_LINUX Linux
* _TM_HPUX HP UNIX
* _TM_AOSF Digital UNIX/Tru64 UNIX
*
* * Following 5 lines(5 platforms) are added by rtm.
* * for the purpose of migration to other platforms.
*
* _TM_AIX IBM AIX
* _TM_IRIX SGI IRIX
* _TM_OS390 IBM OS/390
* _TM_AS400 IBM OS/400, AS/400
* _TM_MACOS Macintosh
*
* ---Compiler type---
*
* _TM_UNKNOWN Unknown Compiler
* _TM_MSVCPP Microsoft Visual C++ compiler; version
* _TM_GNUC GNU C/C++ compiler; major version
* _TM_HP_ACC HP aC++ compiler; version
* _TM_SUNPRO Sun Pro/Workshop/Forte compiler; version (_TM_SUNPRO_CC)
* _TM_SUNPRO_CC Sun Pro/Workshop/Forte CC compiler; version
* _TM_SUNPRO_C Sun Pro/Workshop/Forte C compiler; version
*
* ---Sun Compier Mode---
* _TM_SUN_SPARC Sun Sparc compilation mode
* _TM_SUN_SPARC32 Sun Sparc 32-bit compilation mode
* _TM_SUN_SPARC64 Sun Sparc 64-bit compilation mode
* _TM_SUN_I386 Sun i386 compilation mode
*
* _TM_AOSF_CC Compaq C++ compiler for Tru64; version
*
* * the following 5 lines are added for the migration to other platforms.
* * by rtm.
* _TM_CSET IBM AIX xlC, xlc, etc. this may be in old version.
* _TM_IBMC IBM AIX c compiler,xlc, cc.
* _TM_IBMCPP IBM AIX cpp compiler, xlC.
* _TM_MVSCPP IBM OS390 c++, cxx.
* _TM_MIPSPRO_CC SGI IRIX C
*
* ---64Bit Mode---
*
* _TM_INT64_NATIVE Compiler provides a 64-bit integer (not supported yet)
* _TM_64BIT_NATIVE defined for 64 bit platforms (not supported yet)
*
* ---ENDIAN type---
*
* _TM_BIG_ENDIAN_ARCH Defined if big-endian architecture
* _TM_LITTLE_ENDIAN_ARCH Defined if little-endian architecture
*
* ---Windows Call Mode---
*
* _TM_SYSCALL __stdcall on Windows
*
* _TM_DECLSPEC_DLLEXPORT __declspec(dllexport) for VC++; empty otherwise
* _TM_DECLSPEC_DLLIMPORT __declspec(dllimport) for VC++; empty otherwise
*
***************************************************************************/
/*********************************/
/* Operating system / platform */
/*********************************/
/* Windows platforms */
#if (defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64))
#define _TM_WIN
#if (defined(WIN32) || defined(_WIN32))
#define _TM_WIN32
#elif (defined(WIN64) || defined(_WIN64))
#define _TM_WIN64
#endif
#ifdef _WIN32_WINNT
#define _TM_WINNT
#endif
/* Alpha OSF / Tru64 / Digital UNIX */
#elif (defined(__osf__))
#define _TM_AOSF
#define _TM_UNIX
/* HP Precision Architecture (PA-RISC) - assumed HPUX */
#elif (defined(__RISC2_0__))
#define _TM_HPUX
#define _TM_UNIX
/* SUN Solaris - assumed */
#elif (defined(__sun))
#define _TM_SOLARIS
#define _TM_UNIX
/* IBM AIX */
#elif (defined(_AIX))
#define _TM_AIX
#define _TM_UNIX /* AIX4.2 supports UNIX95, AIX4.3 supports UNIX98 */
/* SGI IRIX */
#elif (defined(IRIX))
#define _TM_IRIX
#define _TM_UNIX
/* IBM OS390 */
#elif (defined(__MVS__))
#define _TM_OS390
#define _TM_UNIX
/* OS/390 V2R2 UNIX95, OS/390 V2R7 UNIX98 */
#elif (defined(EXM_OS390))
#define _TM_OS390
#define _TM_UNIX
/* IBM AS400 */
#elif (defined(__OS400__))
#define _TM_AS400
#define _TM_UNIX
/* Macintosh */
#elif (defined(macintosh))
#define _TM_MACOS
/* Linux */
#elif (defined(__linux__))
#define _TM_LINUX
#define _TM_UNIX
#else
#error "Unknown platform!"
#endif
/**************/
/* Compiler */
/**************/
#if (defined(_MSC_VER)) /* Microsoft Visual C++ */
#define _TM_MSVCPP _MSC_VER
#elif (defined(__GNUC__)) /* GNU Project */
#define _TM_GNUC __GNUC__
#elif (defined(__SUNPRO_CC) || defined(__SUNPRO_C)) /* SUN Pro/Workshop/Forte */
#define _TM_SUNPRO __SUNPRO_CC
#ifdef __SUNPRO_CC
#define _TM_SUNPRO_CC __SUNPRO_CC
#endif
#ifdef __SUNPRO_C
#define _TM_SUNPRO_C __SUNPRO_C
#endif
#elif (defined(__HP_aCC)) /* HP aCC */
#define _TM_HP_ACC __HP_aCC
#elif (defined(__xlC__)) /* IBM C SET */
#define _TM_CSET __xlC__
#elif (defined(__IBMC__)) /* IBM c compiler */
#define _TM_IBMC __IBMC__
#elif (defined(__IBMCPP__)) /* IBM c++ compiler */
#define _TM_IBMCPP __IBMCPP__
#elif (defined(_TM_IRIX) || defined(__sgi))
#define _TM_MPISPRO_CC
#elif (defined(__MVS__) && defined(__cplusplus)) /* OS390 c++ compiler */
#define _TM_MVSCPP
#elif (defined(EXM_OS390) && defined(__cplusplus)) /* OS390 c++ compiler */
#define _TM_MVSCPP
#elif (defined(__DECCXX_VER)) /* Compaq C++ */
#define _TM_AOSF_CC __DECCXX_VER
#else
#error "Unknown compiler!"
#endif
/****************************/
/* Processor architecture */
/****************************/
#if (defined(_TM_MSVCPP))
#ifdef _M_IX86 /* i386 architecture */
#define _TM_I386
#endif
#ifdef _M_ALPHA /* Alpha architecture */
#define _TM_ALPHA
#endif
#elif (defined(_TM_SUNPRO))
#ifdef __sparc /* Sparc architecture - 32-bit compilation mode */
#define _TM_SPARC
#define _TM_SUN_SPARC
#define _TM_SUN_SPARC32
#endif
#ifdef __sparcv9 /* Sparc architecture - 64-bit compilation mode */
#define _TM_SPARC
#define _TM_SUN_SPARC
#define _TM_SUN_SPARC64
#endif
#ifdef __i386 /* I386 architecture */
#define _TM_I386
#define _TM_SUN_I386
#endif
#elif (defined(_TM_AOSF_CC))
#ifdef __alpha /* Alpha architecture */
#define _TM_ALPHA
#endif
#elif (defined(_TM_GNUC))
#if (defined(__alpha) || defined(__alpha__))
#define _TM_ALPHA
#elif (defined(__i386__))
#define _TM_I386
#elif (defined(__sparc))
#define _TM_SUN_SPARC32
#else
#error "Unknown processor architecture!"
#endif
#elif (defined(__RISC2_0__))
#define _TM_HPPA
#endif
/*****************/
/* Endian-ness */
/*****************/
#if (defined(_TM_I386) || defined(_TM_ALPHA))
#ifndef _TM_LITTLE_ENDIAN_ARCH
#define _TM_LITTLE_ENDIAN_ARCH
#endif /* _TM_LITTLE_ENDIAN_ARCH */
#ifdef _TM_BIG_ENDIAN_ARCH
#undef _TM_BIG_ENDIAN_ARCH
#endif /* _TM_BIG_ENDIAN_ARCH */
#else /* Sparc, etc. */
#ifndef _TM_BIG_ENDIAN_ARCH
#define _TM_BIG_ENDIAN_ARCH
#endif /* _TM_BIG_ENDIAN_ARCH */
#ifdef _TM_LITTLE_ENDIAN_ARCH
#undef _TM_LITTLE_ENDIAN_ARCH
#endif /* _TM_LITTLE_ENDIAN_ARCH */
#endif /* Little-endian architectures */
/* TBD: How the hell do I detect endian-ness of HPPA machines, or is
it transparent to the program? */
/**************************/
/* Miscellaneous macros */
/**************************/
#if (defined(_TM_MSVCPP))
#define _TM_DECLSPEC_DLLEXPORT __declspec(dllexport)
#define _TM_DECLSPEC_DLLIMPORT __declspec(dllimport)
#define _TM_SYSCALL __stdcall
#define _TM_DECLSPEC_DLLEXPORT_MID
#elif defined(_TM_OS390)
#define _TM_DECLSPEC_DLLEXPORT
#define _TM_DECLSPEC_DLLIMPORT
#define _TM_SYSCALL
#define _TM_DECLSPEC_DLLEXPORT_MID _Export
#else /* not _TM_MSVCPP */
#define _TM_DECLSPEC_DLLEXPORT
#define _TM_DECLSPEC_DLLIMPORT
#define _TM_SYSCALL
#define _TM_DECLSPEC_DLLEXPORT_MID
#endif /* _TM_MSVCPP */
#endif /* __ENVMACRO_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -