我正在研究非常古老的C ++项目。在Visual Studio 6中构建我的C ++代码时,我收到错误“无法从'unsigned short [9]'转换为'char []'”。
代码如下:
len_predictions = 100
def predictions(degree):
return np.ones((len_predictions,))
degrees = [1,2,4,8,10]
result = np.empty((len(degrees), len_predictions))
for i, deg in enumerate(degrees):
result[i] = predictions(deg)
我用Google搜索并试图了解这个问题。这可能是我构建它的方式。
我已经尝试过用https://mihai-nita.net/2006/07/23/visual-studio-unicode-projects/编写的步骤(在预处理器中添加char variable[] = _T("something");
& UNICODE
)。如果有人可以提出解决方案以纠正此错误,那将非常有用。
答案 0 :(得分:2)
_T
宏根据UNICODE
宏的状态扩展为窄字符串或宽字符串文字。如果未定义UNICODE
,_T
将扩展为char
字符串,如果UNICODE
已定义_T
,则会扩展为宽字符串。
如果您使用的是_T
,则应使用TCHAR
类型,该类型同样会扩展为char
或wchar_t
,具体取决于{{1}的状态1}}宏:
UNICODE
这将扩展为
TCHAR variable[] = _T("something");
如果未定义char variable[] = "something";
,则会扩展为
UNICODE
如果定义了wchar_t variable[] = L"something";
。
值得注意的是UNICODE
在Visual C ++的早期版本中不是真正的类型,而是wchar_t
用于(或宏扩展到)typedef
,这就是为什么您看到的错误消息代替unsigned short
。