新建.vscode文件夹,放入下面4个json文件,需要安装mingw64

  • 准备工作
  • launch.json
  • settings.json
  • tasks.json
  • c_cpp_properties.json (intelliSenseMode智能感知模式配置文件)
    • win64位
    • linux64位

准备工作

  • 安装vscode C/C++插件、CodeRunner。
  • 在当前目录下建立文件夹.vscode,向其中拷贝下面三个json文件
  • mingw64默认安装在C盘,若是安装在其他位置,下面json文件中的C:\\mingw64\\*都要改
  • 调试过程会关联文件launch.json,调试之前把launch.json自定义
  • task.json->launch.json
    注意launch.json中的preLaunchTask,对应task中lable标签
  • vscode安装了C/C++扩展后,右上角有个倾斜的三角,旁边有个下拉下箭头,三个选项中选择run code

快捷键

  • Ctrl r t选择运行任务
    比如用了我的task.json,想删除当下文件夹所有的exe文件。
    在编辑界面就可以Ctrl r t,注意r和t间隔稍微长一些 ,然后选择delete任务,自动在shell中运行命令

    get-childitem * -include *.exe -recurse |remove-item
    
  • 也可以Ctrl+Shift+p,输入run task,选择任务

launch.json

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "g++.exe - 生成和调试活动文件",// 配置名称,将会在启动配置的下拉菜单中显示"type": "cppdbg",// 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg"request": "launch",// 请求配置类型,可以为launch(启动)或attach(附加)"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径"args": [],// 程序调试时传递给程序的命令行参数,一般设为空即可"stopAtEntry": false,// 设为true时程序将暂停在程序入口处,相当于在main上打断点"cwd": "${fileDirname}",// 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录"environment": [],// 环境变量"externalConsole": false,// 为true时使用单独的cmd窗口,与其它IDE一致;18年10月后设为false可调用VSC内置终端"MIMode": "gdb",// 指定连接的调试器,可以为gdb或lldb。但我没试过lldb"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",// 调试器路径,Windows下后缀不能省略,Linux下则不要"setupCommands": [{// 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": false},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe 生成活动文件"}]
}

settings.json

注意settings有用户设置和工作区设置之分,用户设置理解为所有的设置,但是在当前工作目录下settings.json,以工作区settings.json设置为主。下面是工作区设置

{// 添加如下代码即可"files.defaultLanguage": "cpp", // ctrl+N新建文件后默认的语言"editor.formatOnType": true, // 输入分号(C/C++的语句结束标识)后自动格式化当前这一行的代码"editor.suggest.snippetsPreventQuickSuggestions": false, // clangd的snippets有很多的跳转点,不用这个就必须手动触发Intellisense了"editor.acceptSuggestionOnEnter": "off", // 我个人的习惯,按回车时一定是真正的换行,只有tab才会接受Intellisense// "editor.snippetSuggestions": "top", // (可选)snippets显示在补全列表顶端,默认是inline"code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入"code-runner.executorMap": {// 右键run code或者右上角三角形, 运行的命令;适用于PowerShell(Win10默认)的,文件名中有空格也可以编译运行;适用于cmd(win7默认)的,PS和bash也能用,但文件名中有空格时无法运行//linux   "c": "cd $dir && gcc '$fileName' -o '$fileNameWithoutExt.out' -Wall -g -O2 -static-libgcc -std=c11 && ./$fileNameWithoutExt.out","cpp": "cd $dir && g++ '$fileName' -o '$fileNameWithoutExt.out' -Wall -g -O2 -std=c++17 && ./$fileNameWithoutExt.out"//windows power shell   "c": "cd $dir && gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c11 && &'$dir$fileNameWithoutExt'","cpp": "cd $dir && g++ '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c++17 && &'$dir$fileNameWithoutExt'"//windows power shell   不需要设置-fexec-charset, 如果中文有乱码-fexec-charset=GBK, 如下// "c": "cd $dir && gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=GBK && &'$dir$fileNameWithoutExt'",// "cpp": "cd $dir && g++ '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c++17 -fexec-charset=GBK && &'$dir$fileNameWithoutExt'"//cmd// "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=GBK && $dir$fileNameWithoutExt",// "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -std=c++17 -fexec-charset=GBK && $dir$fileNameWithoutExt"}, "code-runner.saveFileBeforeRun": true, // run code前保存"code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false"code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息,默认false"code-runner.ignoreSelection": true, // 默认为false,效果是鼠标选中一块代码后可以单独执行,但C是编译型语言,不适合这样用// "C_Cpp.clang_format_sortIncludes": true,// "files.associations": {// "array": "cpp",// "atomic": "cpp",// "*.tcc": "cpp",// "cctype": "cpp",// "clocale": "cpp",// "cmath": "cpp",// "cstdarg": "cpp",// "cstddef": "cpp",// "cstdint": "cpp",// "cstdio": "cpp",// "cstdlib": "cpp",// "cwchar": "cpp",// "cwctype": "cpp",// "deque": "cpp",// "unordered_map": "cpp",// "vector": "cpp",// "exception": "cpp",// "algorithm": "cpp",// "memory": "cpp",// "memory_resource": "cpp",// "optional": "cpp",// "string": "cpp",// "string_view": "cpp",// "system_error": "cpp",// "tuple": "cpp",// "type_traits": "cpp",// "utility": "cpp",// "fstream": "cpp",// "initializer_list": "cpp",// "iosfwd": "cpp",// "iostream": "cpp",// "istream": "cpp",// "limits": "cpp",// "new": "cpp",// "ostream": "cpp",// "sstream": "cpp",// "stdexcept": "cpp",// "streambuf": "cpp",// "typeinfo": "cpp",// "cstring": "cpp",// "map": "cpp"// },// "terminal.integrated.fontFamily": "Cascadia Mono",// "editor.fontFamily": "Cascadia Code PL,Consolas, 'Courier New' , monospace", //设置字体"editor.fontLigatures": true, //设置能够显示连字"debug.console.fontFamily": "Cascadia Code PL", //设置调试窗口字体"terminal.integrated.fontFamily": "Cascadia Code PL" //设置显示控制台的字体}

tasks.json

task是用户自定义的一条龙操作,Ctrl+Shift+p,输入run task,选择,跳出几个选项,名字是label,一般用不上

{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [//调试{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "C:\\mingw64\\bin\\g++.exe","args": ["${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe","-fdiagnostics-color=always","-g","-Wall","-static-libgcc",],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"presentation": {"echo": true,"reveal": "always","focus": false,"panel": "shared","showReuseMessage": true,"clear": false},"detail": "调试器生成的任务。"},//build excute一条龙{"label": "Compile","command": "g++","args": ["${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe","-fdiagnostics-color=always","-g","-Wall","-static-libgcc","-fexec-charset=GBK"],"type": "process","group": "build","presentation": {"echo": true,"reveal": "always","focus": false,"panel": "shared"}},{"label": "C/C++: 运行exe","command": ".\\${fileBasenameNoExtension}.exe","options": {"cwd": "${fileDirname}",},"problemMatcher": [],"group": "build","presentation": {"echo": true,"reveal": "always","focus": false,"panel": "shared","showReuseMessage": true,"clear": false},"detail": "运行exe"},{"label": "build excute一条龙","dependsOrder": "sequence","dependsOn": ["Compile","C/C++: 运行exe"],"presentation": {"echo": true,"reveal": "always","focus": false,"panel": "shared","showReuseMessage": true,"clear": false},"problemMatcher": []},//delete *.exe{"type": "shell","label": "powershell delete  *.exe","command": "get-childitem * -include *.exe -recurse |remove-item","group": "none","presentation": {"echo": true,"reveal": "always","focus": false,"panel": "shared","showReuseMessage": true,"clear": false},"problemMatcher": [],"detail": "删除exe文件"},]
}

c_cpp_properties.json (intelliSenseMode智能感知模式配置文件)

win64位

{"configurations": [{"name": "Win64",//vscode右下角显示"includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.18362.0","cStandard": "c17","cppStandard": "c++17","compilerPath": "C:/mingw64/bin/g++.exe"}],"version": 4
}

"compilerPath": "C:/mingw64/bin/g++.exe"需要安装mingw64

linux64位

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**"],"defines": ["__USE_POSIX","_GNU_SOURCE"],// "compilerPath": "/usr/bin/clang","compilerPath": "/usr/bin/gcc","cStandard": "c11","cppStandard": "c++17",// "intelliSenseMode": "linux-clang-x64"//感知模式"intelliSenseMode": "linux-gcc-x64" //感知模式}],"version": 4
}

intelliSenseMode智能感知模式,指的是 你有可能在linux中开发 linux arm的,就可以在这里设置为linux-clang-arm,中间的clang和选择的编译器有关,如果gcc那就linux-gcc-arm

Platform defaults:Windows: msvc-x64
Linux: gcc-x64
macOS: clang-x64

compilerPath 这是让智能感知插件询问编译器来如何补全,所以要设置对路径
includePath,让intelliSense正确识别include关系,只有在设置了正确的编译器路径compilerPath还是include出错,才主动修改

includePath
作用:
An include path is a folder that contains header files (such as #include “myHeaderFile.h”) that are included in a source file. Specify a list of paths for the IntelliSense engine to use while searching for included header files.
路径设置:
Searching on these paths is not recursive. Specify ** to indicate recursive search. For example, ${workspaceFolder}/** will search through all subdirectories while ${workspaceFolder} will not.
必要性:
If on Windows with Visual Studio installed, or if a compiler is specified in the compilerPath setting, it is not necessary to list the system include paths in this list.

c_cpp_properties参考自:
https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference

vscode配置以及注意文件路径不能有中文否则不能调试相关推荐

  1. 【错误记录】Visual Studio 中配置 NDK 头文件路径 ( NDK 的三个头文件路径 | 与 CPU 架构相关 asm 头文件路径选择 )

    文章目录 一.报错信息 二.解决方案 1.NDK 的三个头文件路径 2.与 CPU 架构相关 asm 头文件路径选择 一.报错信息 参考 [Android 逆向]Android 进程注入工具开发 ( ...

  2. vscode import 自动引入文件路径

    设置vscode import 自动引入文件路径 在根目录下创建jsconfig.json文件 配置文件,记得每次修改之后都要重新启动vscode,才能生效 {"compilerOption ...

  3. python打开并读取csv文件_!python3中使用使用read_csv( )读取csv文件,文件路径中含有中文,无法读取怎么处理?...

    python3如何根据csv文件的列的内容,自动建数据库表 你好,csv格式的和excel格式是差不多的, 下面是读取excel的一些函数,希望帮到你: # -*- coding: cp936 -*- ...

  4. java读取空格_java 读取文件路径空格和中文的处理

    应用部署时,发生文件读取错误,发现是部署路径中含有空格的文件夹名,然后把应用服务器位置迁移了. 从网上找到如下方案: 1, TestURL().class.getResource("&quo ...

  5. ubuntu16下 vscode配置ros和opencv路径

    如果发现包含的头文件ros/ros.h提示找不到,即需要配置c_cpp_properties.json文件,方法如下, 先安装ros插件,搜索ros,安装第一个即可 按住Fn+F1,输入C/C++,选 ...

  6. linux vscode中添加头文件路径,vscode中c/c++头文件引用找不到飘红

    正在进行 GTK 学习, 但是在 vscode GTK 的头文件找不到(头文件引用底下飘红, 逼死强迫症), 影响敲字键入速度. 解决一下该问题-- vscode中c/c++头文件引用找不到(#inc ...

  7. 【错误记录】Visual Studio 中配置 NDK 头文件路径

    文章目录 一.报错信息 二.解决方案 一.报错信息 参考 [Android 逆向]Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Mak ...

  8. vscode配置全局搜索排除文件

    打开项目后在.vscode下新建setting.json文件:根据你的项目需要添加排除配置, 这里我要排除对.min.js的搜索和vue-devtools目录的搜索 {"workbench. ...

  9. win10系统下配置jupter的文件路径

    引入主题 老早之前装anaconda,因为C盘空间挺多,就装在C盘里面了,当时安装完后桌面多了个Jupyter Notebook的图标,但没怎么管.最近开始使用jupter了,苦于C盘空间紧张,想改变 ...

最新文章

  1. 【机器视觉案例】(9) AI视觉,手势控制电脑键盘,附python完整代码
  2. python机器学习入门(Day11:ANN)
  3. 长沙网络推广浅析新站怎么做会对排名提升更有帮助?
  4. NCBI SRA数据库使用详解
  5. 安全的SD-WAN是如何工作?—Vecloud
  6. RISC-V应用创新大赛 | 一文详解RVB2601套件 助你快速上手赢比赛
  7. jmeter json断言_Jmeter接口测试数据库断言的实现与设计
  8. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第2篇]多核处理器和向量处理器的区别
  9. 【入门4】数组 (今天刷洛谷了嘛)
  10. “富豪相亲大会”究竟迷失了什么?
  11. Jsp 页面添加动态水印
  12. 【Elasticsearch】为什么我在Elasticsearch集群中看到大量的拒绝?
  13. 怎么禁用html5,如何禁用HTML5视频标签?
  14. iOS逆向之自动化重签名
  15. 开课吧之Java常见面试题之RandomAccess接口
  16. AudioToolbox.framework框架学习
  17. 在Mac中关闭应用通知的两种方法
  18. jdk帮助文档在哪_jdk帮助文档在哪里下载
  19. 【问题求教】mapgis67文件转换失败
  20. EXCEL去掉所有英文

热门文章

  1. IPv6单播地址分配指南
  2. 线程安全的集合类有哪些?
  3. C++学习(四):Facebook 的 C++ 11 组件库 Folly Futures
  4. 多选框改变状态颜色跟着变化
  5. 苹果ipad有哪几款_苹果官宣11月第三波发布会,MAC电脑是亮点
  6. 课程设计用计算机演奏音乐,微机原理课程设计--音乐演奏.doc
  7. 关于一款游戏的无责任猜想
  8. ArcGIS中批量导出Shp与批量转换CAD格式
  9. Redis命令之散列
  10. 大文件上传 问题解决三种方案