LPCTSTR,LPWSTR, PTSTR, LPTSTR區別

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。

發佈了4 篇原創文章 · 獲贊 21 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章