指针类型LPTSTR是在哪个头文件中定义的?

指针类型LPTSTR是在哪个头文件中定义的?,第1张

VS2005以后的版本中LPCTSTR的定义位于WinNT.h。

//

// Neutral ANSI/UNICODE types and macros

//

#ifdef UNICODE // r_winnt

#ifndef _TCHAR_DEFINED

typedef WCHAR TCHAR, *PTCHAR

typedef WCHAR TBYTE , *PTBYTE

#define _TCHAR_DEFINED

#endif /* !_TCHAR_DEFINED */

typedef LPWCH LPTCH, PTCH

typedef LPWSTR PTSTR, LPTSTR

typedef LPCWSTR PCTSTR, LPCTSTR

typedef LPUWSTR PUTSTR, LPUTSTR

typedef LPCUWSTR PCUTSTR, LPCUTSTR

typedef LPWSTR LP

#define __TEXT(quote) L##quote // r_winnt

#else /* UNICODE */ // r_winnt

#ifndef _TCHAR_DEFINED

typedef char TCHAR, *PTCHAR

typedef unsigned char TBYTE , *PTBYTE

#define _TCHAR_DEFINED

#endif /* !_TCHAR_DEFINED */

typedef LPCH LPTCH, PTCH

typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR

typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR

#define __TEXT(quote) quote // r_winnt

#endif /* UNICODE */// r_winnt

#define TEXT(quote) __TEXT(quote) // r_winnt

LPCTSTR类型:

LP:long型指针,这是为了兼容Windows 3.1等16位 *** 作系统遗留下来的,在win32中以及其他的32为 *** 作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。

C:常量;

T:和_T含义一样,应该是UNICODE型;

STR:字符串

再看看LPCTSTR的定义:

以下摘自 MS的头文件

// ANSI (Multi-byte Character) types

typedef CONST CHAR *LPCSTR, *PCSTR

#ifdef UNICODE // r_winnt

typedef unsigned short WCHAR// wc, 16-bit UNICODE character

typedef CONST WCHAR *LPCWSTR, *PCWSTR

typedef LPCWSTR LPCTSTR

typedef LPCSTR LPCTSTR

如果没有定义UNICODE,LPCTSTR实际上就是CONST char *

如果定义了UNICODE,LPCTSTR实际上变成了CONST unsigned short

所以char *和LPCSTR可以强制转换

char* p

LPCTSTR lp

p = (LPSTR)lp

用CString或WideCharToMultiByte来处理


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11853617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存