首页 > 解决方案 > VSCode - 有红色下划线,但程序构建和运行正确,并且调试错误

问题描述

我已将我的 vscode 配置为在 Linux 上使用 c++。最近想写一个新的cpp程序,跟着MS VScode的教程,但是我把代码复制到VScode的时候,有一个红色的下划线,提示是这样 的:错误

但是,我可以构建它,甚至可以正确运行它而不会出错:运行构建任务 在终端中运行它

当我调试它时,会发生错误。

{
    "resource": "/home/aqachun/Documents/Projects/cpp/vscodeTest/helloworld.cpp",
    "owner": "C/C++",
    "severity": 8,
    "message": "no instance of constructor \"std::vector<_Tp, _Alloc>::vector [with _Tp=std::string, _Alloc=std::allocator<std::string>]\" matches the argument list -- argument types are: (const char [6], const char [4], const char [6], const char [5], const char [8], const char [23])",
    "startLineNumber": 9,
    "startColumn": 24,
    "endLineNumber": 9,
    "endColumn": 24
}

这是我的 c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "Linux",
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "includePath": [
                "${default}",
                "/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0",
                "/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/x86_64-pc-linux-gnu",
                "/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/backward",
                "/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include",
                "/usr/local/include",
                "/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed",
                "/usr/include"
            ],
            "cppStandard": "c++17",
            "cStandard": "c11"
        }
    ],
    "version": 4
}

和我的代码:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};

   for (const string& word : msg)
   {
      cout << word << " ";
   }
   cout << endl;
}

标签: c++visual-studio-code

解决方案


我也做了那个教程(对于Linux)并且没有这样的错误。这是我的 c_cpp_properties.json 文件,我想可能是因为您没有指定 IntelliSense。试试我的 c_cpp_properties.json:

{
"configurations": [
    {
        "name": "Linux",
        "includePath": [
            "${workspaceFolder}/**"
        ],
        "defines": [],
        "compilerPath": "/usr/bin/gcc",
        "cStandard": "c11",
        "cppStandard": "c++17",
        "intelliSenseMode": "clang-x64"
    }
],
"version": 4

}

这是我的settings.json:

{
"files.associations": {
    "array": "cpp",
    "atomic": "cpp",
    "*.tcc": "cpp",
    "cctype": "cpp",
    "clocale": "cpp",
    "cmath": "cpp",
    "cstdarg": "cpp",
    "cstddef": "cpp",
    "cstdint": "cpp",
    "cstdio": "cpp",
    "cstdlib": "cpp",
    "cwchar": "cpp",
    "cwctype": "cpp",
    "deque": "cpp",
    "unordered_map": "cpp",
    "vector": "cpp",
    "exception": "cpp",
    "algorithm": "cpp",
    "memory": "cpp",
    "memory_resource": "cpp",
    "optional": "cpp",
    "string": "cpp",
    "string_view": "cpp",
    "system_error": "cpp",
    "tuple": "cpp",
    "type_traits": "cpp",
    "utility": "cpp",
    "fstream": "cpp",
    "initializer_list": "cpp",
    "iosfwd": "cpp",
    "iostream": "cpp",
    "istream": "cpp",
    "limits": "cpp",
    "new": "cpp",
    "ostream": "cpp",
    "sstream": "cpp",
    "stdexcept": "cpp",
    "streambuf": "cpp",
    "typeinfo": "cpp"
}

}

我的启动.json:

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
    {
        "name": "g++ build and debug active file",
        "type": "cppdbg",
        "request": "launch",
        "program": "${fileDirname}/${fileBasenameNoExtension}",
        "args": [],
        "stopAtEntry": true,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ],
        "preLaunchTask": "g++ build active file",
        "miDebuggerPath": "/usr/bin/gdb"
    }
]

}

也许更改这些设置文件会有所帮助。矿山作业


推荐阅读