【问题标题】:Incomplete type is not allowed (c++ VSCODE) [closed]不允许不完整的类型(c ++ VSCODE)[关闭]
【发布时间】:2019-10-08 01:57:48
【问题描述】:

我只是使用容器类创建了一个数组a。但是,VScode 的 IntelliSense 显示错误。这是选择排序的一个实现。

c_cpp_properties.json文件内容如下

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.16299.0",
            "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.13.26128/bin/Hostx64/x64/cl.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "msvc-x64"
        }
    ],
    "version": 4
}

代码编译并成功运行。如何修复不正确的 IntelliSense 错误?

【问题讨论】:

  • 请在问题正文中包含minimal reproducible example 作为文本。微小的 sn-ps 图像会遗漏关键上下文并阻止我们重现您的错误。在这种情况下,知道你是否真的做了 #include <array> 并有一个 using 语句来避免需要 std:: 限定 array 是很重要的。
  • 您可能需要#include <array> 记住,智能感知是一种不同于实际编译代码的编译器。
  • 我尝试将您的屏幕快照粘贴到我的 IDE 中,但我的 IDE 无法编译图像。请使用 IDE 中的文本编辑您的帖子(提示:用鼠标突出显示,复制到剪贴板,然后粘贴到您的问题中)。
  • 用于智能感知的编译器可能没有那个头文件。
  • 阅读:几乎可以肯定没有那个标题

标签: c++ windows visual-studio-code


【解决方案1】:

Stop including bits/stdc++.h.

这是一些工具链的实现标头。不适合你。

包含正确的标题:

#include <array>

(您的 Intellisense 引擎可能无法从 Linuxy 平台访问此内部标头。)

顺便说一句,you're not allowed to choose names that begin with two underscores。所以也别这样了。

【讨论】:

  • 是的。 Intellisense 使用的编译器没有 bits/stdc++.h 并且包括 array 已修复它。但是从宏中删除 __ 并不能修复错误
  • 我没有说删除__ 会修复错误,我说你不允许使用它。将来可能会破裂。老实说,这应该已经被你的书涵盖了:/
  • 但是从宏中删除 __ 并不能修复错误这可能会导致其他问题。
  • @drescherjm 是的。它做了。谢谢你。我会解决的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 2011-08-12
  • 2015-10-09
相关资源
最近更新 更多