⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 envmacro.h

📁 一个用于跨操作系统平台的INI配置文件操作模块。
💻 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 + -