VSCode - There is a red underline but the program builds and runs correctly, and dubugging error

Viewed 4627

I have configured my vscode to use c++ on Linux. Recently i want to write a new cpp program, I followed the MS VScode tutorial, but when I copy the code to VScode, there is a red underline and hint like this: the error

However, I can build it and even run it correctly without error:run build tasks run it in terminal

When I debug it, the error occurs.

{
    "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
}

this is my 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
}

and my code:

#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;
}
1 Answers

I also did that tutorial (for Linux) and have no such error. This is my c_cpp_properties.json file and I think maybe its because you don't have your IntelliSense made specified. Try mine c_cpp_properties.json:

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

}

And this is my 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"
}

}

My launch.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"
    }
]

}

Maybe changing those settings files will help. Mine work

Related