我无法初始化WCHAR

时间:2018-09-02 14:34:46

标签: c++ visual-c++

我需要制作和WCHAR。 但这不会起作用,而且我总是会收到错误消息:

Error   C2440   'initializing': cannot convert from 'const wchar_t [11]' to 'WCHAR *'
 StateError (active)    E0144   a value of type "const wchar_t *" cannot be used to initialize an entity of type "WCHAR *

我的代码:

WCHAR *Testlooll = L"TEST";

2 个答案:

答案 0 :(得分:1)

L"TEST"const wchar_t[5]类型的字符串文字,它是 const 个字符的数组(因为文字存在于只读存储器中)。您正在尝试初始化WCHAR*(指向非常量字符的指针)以指向该数组。

初始化指向非常量字符数据的指针以指向 const 字符数据的数组在C ++ 98中是deprecated(以保持向后与旧版代码的兼容性),并且在C ++ 11起是非法的。

您需要根据以下内容更改Testlooll的声明:

const WCHAR *Testlooll = L"TEST";

或者:

LPCWSTR Testlooll = L"TEST";

答案 1 :(得分:0)

除了Remy Lebeau的回答,如果由于某种原因你不能修改Testlooll的定义。您可以将 const arry 转换为 wchar_t*。例如,

struct someLibaryType
{
    WCHAR *Testlooll
};

someLibaryType a;
a.Testlooll = (wchar_t*)L"TEST";

有人可能认为应该转换为 WCHAR* 只是与 Testlooll 的定义类型保持一致。但是在这种情况下,您已经使用 L 来标识字符串,因此它必须是 wchar_t*。