有了上一节写的typedef宏,觉得相当完美,为什么这么说呢?
1. 可读性增强了。如HANDLE
2. 32或64的结构只需要一份,因为PVOID可以很好的呈现指针,与c一致。开关:_WIN64 equ FALSE (或者TRUE)
3. 结构体定义不再需要多见的?字符
如:
struct POINT
x dd ?
y dd ?
ends
变为
struct POINT
x LONG
y LONG
ends
可以看出数据类型与结构体类型变得一致了。
可以将上一节的宏放在struct.inc中,以下保存为win32.h
UNICODE equ FALSE ;ASCII或UNICODE支持 (FALSE or TRUE)
_WIN64 equ FALSE
match =FALSE, UNICODE {
include 'win32a.inc'
}
match =TRUE, UNICODE {
include 'win32w.inc'
include 'encoding\utf16.inc' ;宽字节中文支持
}
include 'macro\if.inc'
; 以下声明一些典型的数据类型(此typedef也可用于结构体类型)
typedef db UINT8 ,INT8 ,BYTE ,CHAR,UCHAR
typedef dw UINT16,INT16,WORD ,WCHAR
typedef dd UINT32,INT32,DWORD,LONG,ULONG
typedef dq UINT64,INT64,QWORD,LONGLONG,ULONGLONG
typedef DWORD BOOL,long,int,HRESULT
match =TRUE ,_WIN64{typedef dq PVOID}
match =FALSE,_WIN64{typedef dd PVOID}
typedef PVOID HANDLE,PSTR,PWSTR,LPVOID