vscode配置c++11
Posted bitcarmanlee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vscode配置c++11相关的知识,希望对你有一定的参考价值。
1.vscode默认c++98
在macos安装vscode以后,默认的c++版本为98。这个版本相对比较老,对很多新特性新语法也不支持。比如如果我们使用如下增强型for循环
for(int n: listnum) ...
vscode会提示:
range-based for loop is a C++11 extension [-Wc++11-extensions]
因此,我们需要将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++"
]
注意添加上了两行配置
-std=c++11
-stdlib=libc++
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
其中指定"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"
上面这一行就是针对cpp的配置。加上-std=c++11就可以生效,代码可以正常编译运行。
5.配置Clang
上述配置完成以后,代码可以正常编译运行。但是在vscode编辑区域内,编辑器还是会提示报警信息:
range-based for loop is a C++11 extension [-Wc++11-extensions]
百思不得其解,也想了很久,能配置的地方已经都改过来了啊。
后来查了很久,终于才发现,编辑器报警的原因跟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编辑区中就不会再出现上述的警告信息!
以上是关于vscode配置c++11的主要内容,如果未能解决你的问题,请参考以下文章