无法从'unsigned short [9]'转换为'char []'

cannot convert from 'unsigned short [9]' to 'char []'

本文关键字:转换 char unsigned short      更新时间:2023-10-16

我正在做非常古老的C++项目。在Visual Studio 6中构建C++代码时,出现错误"无法从'无符号短[9]'转换为'char []'"。

对于下面的代码:

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

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

我已经尝试了用 https://mihai-nita.net/2006/07/23/visual-studio-unicode-projects/编写的步骤(在预处理器中添加UNICODE_UNICODE(。如果有人可以提出纠正此错误的解决方案,那将非常有帮助。

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

如果您使用的是_T,则应使用类型TCHAR,根据UNICODE宏的状态,该类型同样会扩展到charwchar_t

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

这将扩展到

char variable[] = "something";

如果未定义UNICODE,则将扩展为类似

wchar_t variable[] = L"something";

如果定义了UNICODE

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