首页 > 解决方案 > 无法从“无符号短 [9]”转换为“字符 []”

问题描述

我正在研究非常古老的 C++ 项目。在 Visual Studio 6 中构建我的 C++ 代码时,我收到错误"cannot convert from 'unsigned short [9]' to 'char []'"

对于下面的代码:

char    variable[] = _T("something");

我用谷歌搜索并试图理解这个问题。这可能是我构建它的方式。

我已经尝试过https://mihai-nita.net/2006/07/23/visual-studio-unicode-projects/中编写的步骤(在预处理器中添加UNICODE& _UNICODE)。如果有人可以建议解决此错误的解决方案,那将非常有帮助。

标签: c++visual-studioc-stringstcharvisual-studio-6

解决方案


根据_T宏的状态,宏扩展为窄或宽字符串文字UNICODE。如果UNICODE未定义_T将扩展为char字符串,如果UNICODE已定义_T将扩展为宽字符字符串。

如果你正在使用_T,你应该使用 type ,它同样会根据宏的状态TCHAR扩展为或者charwchar_tUNICODE

TCHAR variable[] = _T("something");

这将扩展到

char variable[] = "something";

ifUNICODE未定义,并将扩展为类似

wchar_t variable[] = L"something";

如果UNICODE已定义。

值得注意的是,这wchar_t在 Visual C++ 的早期版本中并不是真正的类型,而只是一个typedeffor (或宏扩展为)unsigned short,这就是为什么您看到的错误消息引用它而不是wchar_t.


推荐阅读