c++ - 无法从“无符号短 [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
)。如果有人可以建议解决此错误的解决方案,那将非常有帮助。
解决方案
根据_T
宏的状态,宏扩展为窄或宽字符串文字UNICODE
。如果UNICODE
未定义_T
将扩展为char
字符串,如果UNICODE
已定义_T
将扩展为宽字符字符串。
如果你正在使用_T
,你应该使用 type ,它同样会根据宏的状态TCHAR
扩展为或者char
:wchar_t
UNICODE
TCHAR variable[] = _T("something");
这将扩展到
char variable[] = "something";
ifUNICODE
未定义,并将扩展为类似
wchar_t variable[] = L"something";
如果UNICODE
已定义。
值得注意的是,这wchar_t
在 Visual C++ 的早期版本中并不是真正的类型,而只是一个typedef
for (或宏扩展为)unsigned short
,这就是为什么您看到的错误消息引用它而不是wchar_t
.
推荐阅读
- javascript - Chart.js 为混合字体样式自定义刻度标签
- angular - 没有在动态组件上调用 ngOnInit
- .net - 尝试执行 POST 请求但收到错误 500,我需要证书文件吗?
- django - 覆盖 Django 的 DurationField 显示
- dax - 当值大于时如何获取 MIN 值(或者如果有一种方法可以计算 2012 年的中位数)
- vue.js - 有没有办法让 NUXT.JS 在我的 CSP 标头中没有“不安全内联”的情况下工作?
- firebase - 问题将元素添加到列表
- sql - 将 Big Query 中的嵌套数据展平为单行
- html - 为什么两种字体显示相同字体大小的不同高度的文本?
- java - 使用SDK清除Azure门户中定义的容器的现有策略后,如何上传新创建的sharedAccessPolicy?