我需要制作和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";
答案 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*。