我使用的是 mingw32,我无法找到 LPCTSTR 到 LPCWSTR 的类型定义。但 mingw64 中的定义相同,如下所示。
typedef LPCWSTR PCTSTR,LPCTSTR;
但是我的代码在 mingw32 中工作正常
,即使我在代码中添加了 LPCTSTR
也没有任何错误,如果我将编译器选项更改为 mingw64,我会收到很多错误.
mingw32 中的 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;
如何解决这个问题?为什么我在定义了 UNICODE 的 mingw32 中没有收到任何错误?
最佳答案
LPCTSTR
在 mingw32 中定义为:
typedef const TCHAR *LPCTSTR;
定义 UNICODE
时,TCHAR
映射到 WCHAR
,使 LPCTSTR
等同于 LPCWSTR
.
当未定义 UNICODE
时,TCHAR
会映射到 CHAR
,从而使 LPCTSTR
等同于 LPCSTR
。
关于c - winnt.h 中的 Mingw32 中未定义 LPCTSTR 到 LPWSTR 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11989048/