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

时间:2018-05-14 20:15:00

标签: c++ visual-studio c-strings tchar visual-studio-6

我正在研究非常古老的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)。如果有人可以提出解决方案以纠正此错误,那将非常有用。

1 个答案:

答案 0 :(得分:2)

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

如果您使用的是_T,则应使用TCHAR类型,该类型同样会扩展为charwchar_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