在winnt.h中的Mingw32中没有定义LPCTSTR到LPWSTR的转换

时间:2012-08-16 14:12:34

标签: c winapi mingw mingw32

我正在使用mingw32,我无法找到LPCTSTR到LPCWSTR的类型定义。但同样在mingw64中定义如下。

typedef LPCWSTR PCTSTR,LPCTSTR;

但我的代码works fine in mingw32没有任何错误,即使我在代码中添加了LPCTSTR,如果我将编译器选项更改为mingw64,我会收到很多错误。

mntw32中的Winnt.h:

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

winnt.h:

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?

1 个答案:

答案 0 :(得分:2)

LPCTSTR在mingw32中被定义为:

typedef const TCHAR *LPCTSTR;

定义UNICODE后,TCHAR会映射到WCHAR,使LPCTSTR等同于LPCWSTR

如果未定义UNICODE,则TCHAR会映射到CHAR,而LPCTSTR会等同于LPCSTR