【问题标题】:Microsoft docs code producing errors in Microsoft StudioMicrosoft 文档代码在 Microsoft Studio 中产生错误
【发布时间】:2019-09-08 10:36:58
【问题描述】:

直到最近我才创建 c++ 控制台应用程序,winapi 还是新的,所以也许我只是缺少一些东西。

当使用来自MS Docs 的代码时,我在 Visual Studio 中遇到了关于不兼容类型的错误。到目前为止,我一直在更改或覆盖变量。认为是时候做对了。

一个例子:https://docs.microsoft.com/en-us/windows/win32/learnwin32/creating-a-window

如果我将最后一个示例复制粘贴到一个正常工作的 Visual Studio 项目中,我会收到多个错误:

因为它是 Microsoft 代码和 Microsoft 软件,我原以为它不需要更改。

【问题讨论】:

  • 这只会在您从头开始创建项目而不是使用项目模板时出错。不是个好主意。错误的具体设置是项目>属性>常规>“字符集”。世界和代码示例都使用 Unicode。
  • 您可能会错过许多其他好东西,尤其是您在程序中诊断 UB 的工具非常有用。一定要使用项目模板。
  • @HansPassant 到目前为止我一直使用默认字符集,在当前版本中是项目>属性>高级>“字符集”,它设置为“使用多字节字符集”并将其更改为 unicode 确实修复了它。但我不确定它是否完全回答了这个问题,MS 代码在默认情况下不能在 MS 软件中运行是有原因的,还是我缺少介绍页面或链接?
  • @HansPassant 你能详细说明错过了其他好东西吗?什么是 UB?
  • MBCS 不是任何项目模板中的默认设置,您并没有告诉我足够多的信息来了解它设置错误的原因。 MS 代码示例确实假定您按预期使用 IDE。 UB 是“未定义的行为”,这是 C 和 C++ 代码的一个方面,很容易产生非常难以诊断的错误。使用this article 取得成功。

标签: visual-c++ visual-studio-2019 msdn


【解决方案1】:

LPCSTR 被定义为 const char*,而不是 const wchar_t*。使用 LPCWSTR 或 LPCTSTR,您应该定义 UNICODE。

【讨论】:

    猜你喜欢
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多