当前位置:   article > 正文

vscode配置c++11_vscode c++11

vscode c++11

1.vscode默认c++98

macos安装vscode以后,默认的c++版本为98。这个版本相对比较老,对很多新特性新语法也不支持。比如如果我们使用如下增强型for循环

for(int n: listnum) {...}
  • 1

vscode会提示:

range-based for loop is a C++11 extension [-Wc++11-extensions]
  • 1

因此,我们需要将vscode中的c++版本进行设置。

2.tasks.json配置c++11

tasks.json是对编译进行相关配置的。为了对c++11能支持生效,我们可以在args参数中进行指定:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"label": "build",
			"command": "/usr/bin/clang++",
			"args": [
				"-std=c++11",
				"-stdlib=libc++",
				"-fdiagnostics-color=always",
				"${file}",
				"-o",
				"${fileDirname}/../build/${fileBasenameNoExtension}",
				"-g",
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault":true
			},
			"detail": "编译器: /usr/bin/clang++"
		}
	]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

注意添加上了两行配置

-std=c++11
-stdlib=libc++
  • 1
  • 2

3.配置.vscode/c_cpp_properties.json

另外我们在.vscode中添加c_cpp_properties.json,对c++版本进行指定

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [
                "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"],
            "compilerPath": "/usr/bin/clang++",
            "cStandard": "c11",
            "cppStandard": "c++11",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

其中指定"cppStandard": “c++11”。

4.配置code-runner

我们实际运行代码的时候,一般都是通过code-runner来运行,此时也需要对code-runner进行相关配置。

在settings.json中,有code-runner相关的配置

    "code-runner.executorMap": {
        "cpp": "cd $dir && clang++ -std=c++11 -g $fileName -o ../build/$fileNameWithoutExt && $dir/../build/$fileNameWithoutExt"
    }
  • 1
  • 2
  • 3

上面这一行就是针对cpp的配置。加上-std=c++11就可以生效,代码可以正常编译运行。

5.配置Clang

上述配置完成以后,代码可以正常编译运行。但是在vscode编辑区域内,编辑器还是会提示报警信息:

range-based for loop is a C++11 extension [-Wc++11-extensions]
  • 1

百思不得其解,也想了很久,能配置的地方已经都改过来了啊。

后来查了很久,终于才发现,编辑器报警的原因跟C/C++ Clang Command Adapter 有关。C/C++ Clang Command Adapter 默认的不是c++11,所以需要将其也进行配置。
在这里插入图片描述

点击左侧最下方的扩展按钮,可以看到我们已经安装了C/C++ Clang Command Adapter。
然后点击C/C++ Clang Command Adapter下方的齿轮按钮,选中齿轮按钮出现的扩展设置选项。在这里插入图片描述

然后将Clang: Cflags中添加项:-std=c11
将Clang: Cxxflags中添加项:-std=c++11
这样vscode编辑区中就不会再出现上述的警告信息!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/606040
推荐阅读
相关标签
  

闽ICP备14008679号