如何在VSCode C ++扩展中启用C ++ 17支持

时间:2018-03-21 02:38:46

标签: c++ visual-studio-code c++17 vscode-settings

我继续在std :: string_view上获得错误曲线,但我能够构建得很好。有没有办法告诉intellisense或C ++ linter使用C ++ 17?

我得到的具体错误是:

namespace "std" has no member "string_view"

4 个答案:

答案 0 :(得分:21)

现在这变得容易多了。在您的 vs 代码扩展设置中搜索 cppstandard,然后从下拉列表中选择您希望扩展使用的 C++ 版本。

enter image description here

为了确保您的调试器使用相同的版本,请确保您的 tasks.json 具有类似的内容,其中重要的行是 --std,之后的行定义了版本.

{
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: g++ build active file",
      "command": "/usr/bin/g++",
      "args": [
        "--std",
        "c++17",
        "-I",
        "${fileDirname}",
        "-g",
        "${fileDirname}/*.cpp",
        "-o",
        "${workspaceFolder}/out/${fileBasenameNoExtension}.o"
      ],
      "options": {
        "cwd": "${workspaceFolder}"
      },
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ],
  "version": "2.0.0"
}

请注意,如果您直接复制上述 tasks.json,则您的工作区根目录中需要有一个名为 out 的文件夹。

答案 1 :(得分:3)

刚刚更新。我也遇到了这个问题。

我通过添加 c_cpp_properties.json

解决它
  1. Ctrl + Shift + P 然后选择 C/C++:Edit Configurations (JSON)

  2. 调整 cStandardcppStandard 的内容:

        "cStandard": "gnu17",
        "cppStandard": "gnu++17",
    

答案 2 :(得分:2)

在他们的GitHub问题跟踪器中有关于此的帖子:std::string_view intellisense missing (CMake, VC++ 2017)

在另一个问题中,据说扩展默认为C ++ 17,但尚不支持所有C ++ 17功能:Setting C++ standard

这由c_cpp_properties.json Reference Guide确认,其中列出了cppStandard选项,默认为C ++ 17。 (要编辑此文件,请按 Ctrl + Shift + P 并输入C/CPP: Edit Configurations)。

看来,他们还没有完全支持。

答案 3 :(得分:1)

如果您在尝试了 @Marc.2377@W Kenny 的解决方案后仍无法启用,请执行以下操作

  1. tasks.json 文件夹中打开 .vscode
  2. "--std","c++17"下添加"args:"
  3. 保存tasks.json