我继续在std :: string_view上获得错误曲线,但我能够构建得很好。有没有办法告诉intellisense或C ++ linter使用C ++ 17?
我得到的具体错误是:
namespace "std" has no member "string_view"
答案 0 :(得分:21)
现在这变得容易多了。在您的 vs 代码扩展设置中搜索 cppstandard
,然后从下拉列表中选择您希望扩展使用的 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"
}
请注意,如果您直接复制上述 tasks.json
,则您的工作区根目录中需要有一个名为 out
的文件夹。
答案 1 :(得分:3)
刚刚更新。我也遇到了这个问题。
我通过添加 c_cpp_properties.json
Ctrl + Shift + P 然后选择 C/C++:Edit Configurations (JSON)
调整 cStandard
和 cppStandard
的内容:
"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 的解决方案后仍无法启用,请执行以下操作
tasks.json
文件夹中打开 .vscode
"--std","c++17"
下添加"args:"
tasks.json