如何在vscode中使用C++20?

093gszye  于 2023-02-01  发布在  Vscode
关注(0)|答案(4)|浏览(516)

我想在vscode中使用C20,就像我想在unordered_set上使用. contains一样,但是当我尝试它时,我得到了error C2039: 'contains': is not a member of 'std::unordered_set,我不明白为什么,因为我已经进入c_cpp_properties. json并指定了c20的使用,但它似乎仍然不起作用,而且我找不到任何关于在vscode上更改C++版本的信息。
编译器版本:19.25.28614 for x86

axzmvihb

axzmvihb1#

必须添加msvc编译器选项/std:c++latest才能使用unordered_map::contains()成员函数。

r1wp621o

r1wp621o2#

据我所知,c_cpp_properties. json中关于c版本的设置只是用于帮助您编写代码的服务(智能感知、代码浏览等)。Vscode没有自己的c编译器。它使用您配置的任何编译器。
你可能想检查一下你的编译器支持的最新标准。我发现这篇帖子很有帮助。如何确定编译器使用的C++标准的版本?
确保使用编译器(编译时或运行时)计算常量。当光标悬停在常量上时,可能会看到不同的值。

zbdgwd5y

zbdgwd5y3#

本页提供了一个很好的说明:
https://code.visualstudio.com/docs/cpp/config-msvc
缺少的位是cl.exe所需的/std:c++20编译器标志
这是一个更新的tasks.json,为我工作:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: cl.exe build active file",
            "command": "cl.exe",
            "args": [
                "/Zi",
                "/EHsc",
                "/nologo",
                "/std:c++20",
                "/Fe:",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "${file}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}
x3naxklr

x3naxklr4#

这是windows版的tsaks.json。只需编辑args并添加"-std=c++23",瞧!你的工作就完成了!我已经从winlibs离线安装了winlibs-x86_64-posix-seh-gcc-12.2.0-llvm-15.0.7-mingw-w 64 ucrt-10.0.0-r4。你也可以做同样的事情。100%正常工作。

{
        "tasks": [
            {
                "type": "cppbuild",
                "label": "C/C++: gcc.exe build active file",
                "command": "C:\\mingw64\\bin\\g++.exe",
                "args": [
                    "-fdiagnostics-color=always",
                    "-g",
                    "${file}",
                    "-std=c++23",
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "options": {
                    "cwd": "${fileDirname}"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "detail": "Task generated by Debugger."
            }
        ],
        "version": "2.0.0"
    }

相关问题