将一个Windows程序移植到Linux上发现两个操作系统对很多数据类型的命名方式区别很大比如Windows下对于无符号数据类型一般用U+x的方式像UINTUCHARULONG而Linux上就要中规中矩都是unsigned +x;另外还有一些数据类型是Windows有而Linux没有的像DWORDHANDLELPSTR等等于是我写了一个Windows数据类型在Linux下进行转换的头文件
<p>#define INVALID_HANDLE_VALUE </p><p>#define _MAX_PATH /* max length of full pathname */</p><p>#define HANDLE int</p><p>#define MAX_PATH </p><p>#define TRUE true</p><p>#define FALSE false</p><p>#define __stdcall</p><p>#define __declspec(x)</p><p>#define __cdecl</p><p>#define max(ab) (((a) > (b)) ? (a) : (b))</p><p>#define min(ab) (((a) < (b)) ? (a) : (b))</p><p>typedef int BOOL;</p><p>typedef unsigned char BYTE;</p><p>typedef float FLOAT;</p><p>typedef FLOAT *PFLOAT;</p><p>typedef char CHAR;</p><p>typedef unsigned char UCHAR;</p><p>typedef unsigned char *PUCHAR;</p><p>typedef short SHORT;</p><p>typedef unsigned short USHORT;</p><p>typedef unsigned short *PUSHORT;</p><p>typedef long LONG;</p><p>typedef unsigned short WORD;</p><p>typedef unsigned long DWORD;</p><p>typedef long long LONGLONG;</p><p>typedef unsigned long long ULONGLONG;</p><p>typedef ULONGLONG *PULONGLONG;</p><p>typedef unsigned long ULONG;</p><p>typedef int INT;</p><p>typedef unsigned int UINT;</p><p>typedef unsigned int *PUINT;</p><p>typedef void VOID;</p><p>typedef char *LPSTR;</p><p>typedef const char *LPCSTR;</p><p>typedef wchar_t WCHAR;</p><p>typedef WCHAR *LPWSTR;</p><p>typedef const WCHAR *LPCWSTR;</p><p>typedef DWORD *LPDWORD;</p><p>typedef unsigned long UINT_PTR;</p><p>typedef UINT_PTR SIZE_T;</p><p>typedef LONGLONG USN;</p><p>typedef BYTE BOOLEAN;</p><p>typedef void *PVOID;</p><p>typedef struct _FILETIME {</p><p>DWORD dwLowDateTime;</p><p>DWORD dwHighDateTime;</p><p>} FILETIME;</p><p>typedef union _ULARGE_INTEGER {</p><p>struct {</p><p>DWORD LowPart;</p><p>DWORD HighPart;</p><p>};</p><p>struct {</p><p>DWORD LowPart;</p><p>DWORD HighPart;</p><p>} u;</p><p>ULONGLONG QuadPart;</p><p>} ULARGE_INTEGER</p><p>*PULARGE_INTEGER;</p>