| 类型 | 长度(bit) | 范围 | | char(字符型) | 8 | ASCII字符 | | unsigned char(无符号字符型) | 8 | 0~255 | | signed char(有符号字符型) | 8 | -128~127 | | int(整型) | 16 | -32768~32767 | | unsigned int(无符号整型) | 16 | 0~65535 | | signed int(有符号整型) | 16 | 同int | | short int(短整型) | 8 | -128~127 | | unsigned short int(无符号短整型) | 8 | 0~255 | | signed short int(有符号短整型) | 8 | 同short int | | long int(长整型) | 32 | -2147483648~2147483649 | | signed long int(有符号长整型) | 32 | -2147483648~2147483649 | | unsigned long int(无符号长整型) | 32 | 0~4294967296 | | float(单精度型) | 32 | 约精确到6位数 | | double(双精度型) | 64 | 约精确到12位数 |
| LPSTR | char * | 一个32位指向字符串的指针 | | LPCSTR | const char * | 一个32位指向字符串常量的指针 | | LPWSTR | wchar_t * | 一个32位指向Unicode字符串的指针 | | LPCWSTR | const wchar_t * | 一个32位指向Unicode字符串常量的指针 | | LPTSTR | | 一个32位指向字符串的指针,此字符串可移植到Unicode和DBCS(DoubleCString) | | LPCTSTR | | 一个32位指向字符串常量的指针,此字符串可移植到Unicode和DBCS(DoubleCString) |
L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。即win32中,long,near,far指针与普通指针没有区别,LP与P是等效的。 P表示这是一个指针。 T表示_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。 STR表示这个变量是一个字符串。 C表示是一个常量,const。
LPTSTR: 如果定义了UNICODE宏则LPTSTR被定义为LPWSTR。typedef LPTSTR LPWSTR; 否则LPTSTR被定义为LPSTR。 typedef LPTSTR LPSTR; 下面列出一些常用的typedefs: 类型 MBCS Unicode WCHAR wchar_t wchar_t LPSTR char* char* LPCSTR const char* const char* LPWSTR wchar_t* wchar_t* LPCWSTR const wchar_t* const wchar_t* TCHAR char wchar_t LPTSTR TCHAR*(或char*) TCHAR* (或wchar_t*) LPCTSTR const TCHAR* const TCHAR*
由于Win32 API文档的函数列表使用函数的常用名字(例如, SetWindowText"),所有的字符串都是用TCHAR来定义的。(除了XP中引入的只适用于Unicode的API)。所以结论,在VS2005系统中,为提高可移植性,定义字符串时用TCHAR,转化为UNICODE时用_T而不用L。
|