最近将一个Windows程序移植到Linux上,发现两个操作系统对很多数据类型的命名方式区别很大,比如Windows下对于无符号数据类型一般用U+x的方式,像UINT、UCHAR、ULONG,而Linux上就要中规中矩,都是unsigned +x;另外,还有一些数据类型是Windows有,而Linux没有的,像DWORD、HANDLE、LPSTR等等。于是我写了一个Windows数据类型在Linux下进行转换的头文件,贴在这里,供大家学习与参考吧!
#define INVALID_HANDLE_VALUE -1 #define _MAX_PATH 260 /* max. length of full pathname */ #define HANDLE int #define MAX_PATH 260 #define TRUE true #define FALSE false #define __stdcall #define __declspec(x) #define __cdecl #define max(a,b) (((a) > (b)) ? (a) : (b)) #define min(a,b) (((a) < (b)) ? (a) : (b)) typedef int BOOL; typedef unsigned char BYTE; typedef float FLOAT; typedef FLOAT *PFLOAT; typedef char CHAR; typedef unsigned char UCHAR; typedef unsigned char *PUCHAR; typedef short SHORT; typedef unsigned short USHORT; typedef unsigned short *PUSHORT; typedef long LONG; typedef unsigned short WORD; typedef unsigned long DWORD; typedef long long LONGLONG; typedef unsigned long long ULONGLONG; typedef ULONGLONG *PULONGLONG; typedef unsigned long ULONG; typedef int INT; typedef unsigned int UINT; typedef unsigned int *PUINT; typedef void VOID; typedef char *LPSTR; typedef const char *LPCSTR; typedef wchar_t WCHAR; typedef WCHAR *LPWSTR; typedef const WCHAR *LPCWSTR; typedef DWORD *LPDWORD; typedef unsigned long UINT_PTR; typedef UINT_PTR SIZE_T; typedef LONGLONG USN; typedef BYTE BOOLEAN; typedef void *PVOID; typedef struct _FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime; } FILETIME; typedef union _ULARGE_INTEGER { struct { DWORD LowPart; DWORD HighPart; }; struct { DWORD LowPart; DWORD HighPart; } u; ULONGLONG QuadPart; } ULARGE_INTEGER, *PULARGE_INTEGER;
【编辑推荐】
- 如何开启Windows 8的隐藏功能
- Linux 内核2.6.38.3 稳定版发布
- 四招教你打造轻型Linux桌面环境
- Windows工具包扫盲:有关MPS报告
- Linux十大妙用:充当Windows修复工具