【发布时间】:2022-11-25 16:10:04
【问题描述】:
我有代码 C++,我想将其编译为一个库介子我得到 2 种错误的地方
- 错误 C2440:“初始化”:无法从“const wchar_t [19]”转换 到'const PWCHAR' -注意:从字符串文字转换会丢失 const 限定符(请参阅 /Zc:strictStrings)
- 错误 C2664: '... 无法从 'const wchar_t [6]' 转换参数 2' 到 'PWSTR 注意:从字符串文字转换会丢失 const 限定符(请参阅 /Zc:strictStrings)
winnt.h 对 wchar_t 使用 typedef:
typedef wchar_t WCHAR;
typedef WCHAR *PWCHAR;
如果我在我的代码中这样做,我会收到错误 C2440:
const PWCHAR Tokens[] = { L"A", L"B", L"C", L"D" };
如果我更改我的代码,错误就会消失:
const wchar_t * Tokens[] = { L"A", L"B", L"C", L"D" };
我知道在 C 中,字符串文字的类型是 char 数组,但在 C++ 中,它是导致此错误的 const char 数组。 我也知道可以在 VStudio 中更改 Zc:strictStrings。但是既然我用介子编译我的代码,我该如何使用介子来消除那个错误呢?
【问题讨论】:
-
使用 std::wstring 不是更好吗?
标签: c++ compiler-errors typedef meson-build wchar