2012-08-16 37 views
0

我正在使用mingw32,我無法找到LPCTSTR的類型定義到LPCWSTR。但是在mingw64中定義如下。LPCTSTR到LPWSTR轉換沒有在winw.h中的Mingw32中定義

typedef LPCWSTR PCTSTR,LPCTSTR;

但我的代碼works fine in mingw32沒有任何錯誤,甚至我在我的代碼添加LPCTSTR,如果我改變了編譯器選項mingw64我獲得了大量的錯誤。

WINNT.H中的mingw32:

typedef TCHAR TBYTE,*PTCH,*PTBYTE; 
typedef TCHAR *LPTCH,*PTSTR,*LPTSTR,*LP,*PTCHAR; 
typedef const TCHAR *LPCTSTR; 

WINNT.H在mingw64:

typedef LPWSTR LPTCH,PTCH; 
typedef LPWSTR PTSTR,LPTSTR; 
typedef LPCWSTR PCTSTR,LPCTSTR; 
typedef LPUWSTR PUTSTR,LPUTSTR; 
typedef LPCUWSTR PCUTSTR,LPCUTSTR; 
typedef LPWSTR LP; 

如何解決這個問題?爲什麼我在mingw32中沒有得到任何錯誤,並且UNICODE被定義了?

+0

爲什麼你會在mingw32中看到錯誤? 'LPCTSTR'的定義就在您發佈的代碼中。我們不能幫助你解決你用mingw64得到的錯誤,除非我們看到你的代碼和實際錯誤... – interjay 2012-08-16 17:29:25

+0

@interjay我的疑問是,當UNICODE在Mingw64中定義時,我可以看到LPCTSTR typedef'ed爲LPCWSTR, Mingw32中沒有相同的typedef。 – 2vision2 2012-08-17 03:47:10

回答

2

LPCTSTR在的mingw32被定義爲:

typedef const TCHAR *LPCTSTR; 

UNICODE定義,TCHAR映射到WCHAR,使得LPCTSTR equivilent到LPCWSTR

UNICODE沒有定義,TCHAR映射到CHAR代替,使得LPCTSTR equivilent到LPCSTR