Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR

DWORD:本来被定义为unsigned long,DWORD的含义就是双字,一个字是2字节,双字就是32字节。 但是在C/C++中,经常会用到把一个指针转换成数字储存,然后再将其传唤为指针调用。那么在32位系统下,指针是32位长度的,在64位系统下,指针是64位长度的,所以微软引入了DWORD_PTR和INT_PTR等带_PTR的类型,这些类型是这么保证的:将指针转换成带_PTR的类型然后再转换回来,可以得到原始的指针,不会发生截断。在实现上,DWORD_PTR在32位程序和64位程序的定义是不同的,32位定位为unsigned long,64位定义为unsigend __int64。 基于这个要求,你最好使用C#提供的类似的功能: System.UIntPtr 这个数据类型对应C语言里面带_PTR的类型,保证程序在32位平台和64位平台,以及今后会出现的128位平台都可以正常运行。1个二进制位称为1个bit,8个二进制位称为1个Byte,也就是1个字节(8位),2个字节就是1个Word(1个字,16位),则DWORD(DOUBLE WORD)就是双字的意思,两个字(32位)

LPSTR:即 char *,指向以'/0'结尾的8位(单字节)ANSI字符数组指针

LPWSTR:即wchar_t *,指向'/0'结尾的16位(双字节)Unicode字符数组指针

LPCSTR:即const char *

LPCWSTR:即const wchar_t *

LPTSTR:LPSTR、LPWSTR两者二选一,取决于是否宏定义了UNICODE或ANSI

LPCTSTR:LPCSTR、LPCWSTR两者二选一,取决于是否宏定义了UNICODE或ANSI,如下是从MFC库中拷来

posted @ 2014-04-11 14:22  亲福  阅读(489)  评论(0编辑  收藏  举报