100 lines
2.6 KiB
C
100 lines
2.6 KiB
C
#ifndef _OS_DEF_H_
|
||
#define _OS_DEF_H_
|
||
/*
|
||
* 定义跨平台需要用的一些数据类型定义等
|
||
* vc并不包含stdint.h文件直到2010版本,这里使用了一个网上找的替代
|
||
*/
|
||
|
||
#define _MEMORY_TRACE_
|
||
|
||
#ifdef _WIN32_WINNT
|
||
#if (_WIN32_WINNT < 0x0400)
|
||
#undef _WIN32_WINNT
|
||
#define _WIN32_WINNT 0x0400
|
||
#endif
|
||
#else
|
||
#define _WIN32_WINNT 0x0400
|
||
#endif
|
||
|
||
#define __STDC_LIMIT_MACROS
|
||
|
||
#ifdef _MSC_VER
|
||
|
||
#include <Windows.h>
|
||
#include <dbghelp.h>
|
||
|
||
#define SleepEx(x) Sleep(x*1000)
|
||
|
||
#if _MSC_VER < 1600
|
||
#include "win/stdint.h"
|
||
#else
|
||
#include <stdint.h>
|
||
#endif //end _MSC_VER < 1600
|
||
|
||
#else
|
||
|
||
#include <stdint.h>
|
||
#include "unistd.h"
|
||
#define Sleep(x) usleep(x * 1000)
|
||
#define SleepEx(x) sleep(x)
|
||
#define TRUE 1
|
||
#define FALSE 0
|
||
#define _T
|
||
#define _I64_MAX LONG_MAX
|
||
typedef int BOOL;
|
||
#define ZeroMemory(Destination,Length) memset((Destination),0,(Length))
|
||
#endif //end _MSC_VER
|
||
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
#include <stdlib.h>
|
||
#include "stdarg.h"
|
||
#include <assert.h>
|
||
#include <limits.h>
|
||
//为兼容之前代码额外定义的一些数据类型,因首先使用stdint.h里定义的类型
|
||
typedef char Int8;
|
||
typedef unsigned char UInt8;
|
||
typedef unsigned char BYTE;
|
||
typedef short Int16;
|
||
typedef unsigned short UInt16;
|
||
typedef int Int32;
|
||
typedef unsigned int UInt32;
|
||
typedef unsigned int UINT32;
|
||
typedef unsigned int UINT;
|
||
typedef long long int Int64;
|
||
typedef long long int INT64;
|
||
typedef uint64_t UInt64;
|
||
typedef uint64_t Uint64;
|
||
typedef uint64_t UINT64;
|
||
|
||
#define MAKEINT16(a, b) ((uint16_t)(((uint8_t)((uint16_t)(a) & 0xff)) | ((uint16_t)((uint8_t)((uint16_t)(b) & 0xff))) << 8))
|
||
#define LOINT8(a) ((uint8_t)((uint16_t)(a) & 0xff))
|
||
#define HIINT8(a) ((uint8_t)((uint16_t)(a) >> 8))
|
||
|
||
#define MAKEINT32(a, b) ((uint32_t)(((uint16_t)((uint32_t)(a) & 0xffff)) | ((uint32_t)((uint16_t)((uint32_t)(b) & 0xffff))) << 16))
|
||
#define LOINT16(a) ((uint16_t)((uint32_t)(a) & 0xffff))
|
||
#define HIINT16(a) ((uint16_t)((uint32_t)(a) >> 16))
|
||
|
||
#define MAKEINT64(a, b) ((uint64_t)(((uint32_t)((uint64_t)(a) & 0xffffffff)) | ((uint64_t)((uint32_t)((uint64_t)(b) & 0xffffffff))) << 32))
|
||
#define LOINT32(a) ((uint32_t)((uint64_t)(a) & 0xffffffff))
|
||
#define HIINT32(a) ((uint32_t)((uint64_t)(a) >> 32))
|
||
|
||
#define __max(a,b) (((a) > (b)) ? (a) : (b))
|
||
#define __min(a,b) (((a) < (b)) ? (a) : (b))
|
||
|
||
#ifndef _MSC_VER
|
||
|
||
|
||
#if defined(_M_X64) || defined(__x86_64__)
|
||
typedef long long int INT_PTR; //INT_PTR在windows里定义了,不过linux下是没有的,增加这个定义兼容原来的代码
|
||
typedef unsigned long long int UINT_PTR;
|
||
#else
|
||
typedef int INT_PTR;
|
||
typedef unsigned int UINT_PTR;
|
||
#endif
|
||
|
||
#endif
|
||
|
||
#endif
|
||
|