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

ajo*_*eps 31 c++ visual-studio-code c++17 vscode-settings

我一直在 std::string_view 上出现错误曲线,但我能够构建得很好。有没有办法告诉智能感知或 C++ linter 使用 C++17?

我得到的具体错误是:

namespace "std" has no member "string_view"
Run Code Online (Sandbox Code Playgroud)

Mic*_*ade 31

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

在此处输入图片说明

为了确保您的调试器使用相同的版本,请确保您有这样的事情您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"
}
Run Code Online (Sandbox Code Playgroud)

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

  • 这不适用于“std::byte”。VSCode 上仍然没有找到,但已经是 2022 年了 (3认同)

Mar*_*377 19

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

在另一个问题中,据说扩展默认为 C++17,但尚不支持所有 C++17 特性:设置 C++ 标准

c_cpp_properties.json 参考指南证实了这一点,其中列出了cppStandard一个默认为 C++17的选项。(要编辑此文件,请按Ctrl+ Shift+P并输入C/CPP: Edit Configurations)。

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

  • 有趣的是,我的设置是 c++17,但仍然没有找到 `<Optional>` :angry: (3认同)
  • @DrumM 这也正是我一直在寻找的,<可选>。我可以编译,但 VS Code 给我带来了波浪线,这很烦人。那好吧。 (2认同)
  • 我没有看到任何有关“msvc.json”文件的文档,只看到“c_cpp_properties.json”。为什么后者还不够呢? (2认同)

W K*_*nny 7

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

我通过添加来解决它c_cpp_properties.json

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

  2. cStandard调整和的内容cppStandard

        "cStandard": "gnu17",
        "cppStandard": "gnu++17",
    
    Run Code Online (Sandbox Code Playgroud)