VisualStudio Code 支持C++11插件配置

问题

Visual Studio Code中的插件: Code Runner 支持运行C、C++、Java、JS、PHP、Python等多种语言。

但是它不支持C++11特性的一些使用,比如类似错误:

binarySearch.cpp:26:17: error: non-aggregate type ‘vector’ cannot be initialized with an initializer list

需要安装插件:

  • C/C++
  • CodeRunner

C/C++配置

打开插件拓展, 找到C/C++, 选择扩展设置
VisualStudio Code 支持C++11插件配置_第1张图片

可通过查找,找到配置Custom Configuration Variables, 并打开setttings.json文件
VisualStudio Code 支持C++11插件配置_第2张图片
添加如下内容,保存关闭

"C_Cpp.default.compilerArgs": [
  "-g",
  "${file}",
  "-std=c++11",
  "-o",
  "${fileDirname}/${fileBasenameNoExtension}"
],

然后打开本目录内的**.vscode**文件夹,查看是否存在c_cpp_properties.json文件,如果没有,则新建, 它是用于配置C++语言环境的IntelliSense配置相关,将如下内容复制进去:

{
    "configurations": [
      {
        "name": "Mac",
        "defines": [],
        "macFrameworkPath": [
          "/System/Library/Frameworks",
          "/Library/Frameworks",
          "${workspaceFolder}/**"
        ],
        "compilerPath": "/usr/bin/g++",
        "cStandard": "c11",					// 如果存在,则重要修改此处
        "cppStandard": "c++11",				// 如果存在,则重要修改此处
        "intelliSenseMode": "clang-x64",
        "browse": {
          "path": [
            "${workspaceFolder}"
          ],
          "limitSymbolsToIncludedHeaders": true,
          "databaseFilename": ""
        }
      }
    ],
    "version": 4
}

然后打开 .vscode 文件夹下的tasks.json文件,在args内增加属性:

"args": [
  "-std=c++11",                       // add
  "-stdlib=libc++",                   // add
  "-fdiagnostics-color=always",       // add

  "-fcolor-diagnostics",
  "-fansi-escape-codes",
  "-g",
  "${file}",
  "-o",
  "${fileDirname}/${fileBasenameNoExtension}"
],

到这里C++11的配置算是结束,但是CodeRunner插件需要配置下,保证C++11的代码运行正常。


Code Runner

打开拓展,找到CodeRunner,选择扩展设置
VisualStudio Code 支持C++11插件配置_第3张图片

找到Executor Map By File Extension, 打开settings.json
VisualStudio Code 支持C++11插件配置_第4张图片
查找下字符串"cpp", 替换内容为:

"cpp": "cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

如图所示:
VisualStudio Code 支持C++11插件配置_第5张图片

至此配置结束。

你可能感兴趣的:(Tool,visual,studio,code)