VS Code 配置C/C++环境

VS Code 配置C/C++环境

1.配置MinGW

1.1 检查系统是否存在MinGW

如果之前安装过 Dev-c++ 或其他自带MinGW的编译软件,则可以跳过 “配置MinGW” 部分 ~

1.1.1 官网安装 MinGW

如果系统不存在MinGW,则建议前往官网安装MinGW。
下载链接: MinGW

1.1.1.1 下载安装步骤

① 点击链接跳转,选择 Downloads
在这里插入图片描述
②找到 MingW-W64-builds,点击进入
在这里插入图片描述
③ 点击 Sourceforge
在这里插入图片描述
稍等几秒会自动开始下载
在这里插入图片描述
④ 运行下载的mingw-w64-install.exe,弹出如下对话框选Next
在这里插入图片描述
如果电脑网络连接的是无线网络,点击Next后可能还会弹出如下对话框提示 “Cannot download repository.txt” 而终止安装:
在这里插入图片描述
所以,优先选择有线网络!
⑤ 接着按下图标注选择各项即可。
在这里插入图片描述
⑥ 选择安装路径,可以默认路径,也可以自定义路径。设置完成后点击Next即进入在线下载页面。
在这里插入图片描述

(在线下载十分慢,所以推荐下面的方法直接下载文件包比较快!)
显示开始下载后直接关闭即可。

⑦ 下载离线包离线包链接
选择合适的版本下载即可。
Win10推荐选择: x 86 _ 64 − w i n 32 − s e h \color{red}{x86\_64-win32-seh} x86_64win32seh
在这里插入图片描述

⑧ 下载完成解压后的界面是这样的:
在这里插入图片描述
(解压到之前安装MinGW时的目录下)

2.设置环境变量

2.1 打开环境变量设置

此电脑 -> 属性 -> 高级系统设置 -> 环境变量
在这里插入图片描述

2.2 添加环境变量

在系统变量栏中新建一个名为 MinGW 的环境变量,内容如下:

D:\Program Files\MinGW\mingw64\bin

内容为你的MinGW路径,直到bin目录

在这里插入图片描述
如果没有D:\Program Files\MinGW\bin目录就不用添加,一般是在官网线上下载包才是这种路径,离线下载解压后一般是D:\Program Files\MinGW\mingw64\bin,看自己的目录结构而定。

2.3 测试环境

打开命令行输入

gcc
g++
gdb

出现以下结果即为环境变量配置成功!
在这里插入图片描述

3.下载相应扩展

1.Code Runner
在这里插入图片描述
点击Code Runner的设置->扩展设置->勾选Run in Terminal,即可在终端运行(在“输出栏运行会有乱码”)。
在这里插入图片描述

2. C/C++
在这里插入图片描述

4.运行

输入以下 c 代码用于测试:

#include<stdio.h>
int main() {
    printf("hello,word!");
    return 0 ;
}

点击右上角"运行"按钮即可运行代码
在这里插入图片描述
或右键选择"Run Code"运行代码
在这里插入图片描述
运行结果:
在这里插入图片描述

5.调试

设置断点,单击运行,选择启动调试,选择环境C++(GDB/LLDB),
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时生成了.vscode文件夹,里面包括了launch.jsontask.json两个配置文件
此时可以开始调试了。
在这里插入图片描述
如果调试不能正常进行,把launch.jsontask.json两个配置文件内容替换成下面的内容试试。

launch.json文件

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg",       // 配置类型,这里只能为cppdbg
            "request": "launch",    // 请求配置类型,可以为launch(启动)或attach(附加)  
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径  
            "args": [],             // 程序调试时传递给程序的命令行参数,一般设为空即可  
            "stopAtEntry": false,   // 设为true时程序将暂停在程序入口处,一般设置为false  
            "cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录  
            "environment": [],
            "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台  
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\Program Files\\MinGW\\mingw64\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应  
            "preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc  
            "setupCommands": [
                {
            "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

task.json文件

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "g++",
            "command": "D:\\Program Files\\MinGW\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务。"
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:\\Program Files\\MinGW\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

以下代码不用管

{
    "version": "2.0.0",
    "command": "gcc",
    "args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"],    // 编译命令参数
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceFolder}"],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    }
}

⚠️注意:
launch.json里的

preLaunchTask:"taskA"

这一项的值必须要和
task.json里的label值一致

"label": "taskA"

6.VS Code 终端清屏

6.1 问题
cls

无法真正清屏,滑轮一滚动,记录就出来了…
这是因为:在window10系统,当我们在命令提示符终端使用cls命令时会得到清屏处理,往上滑动也不会再有之前的信息。
但当我们在vscode使用cls时只是调至当前行,向上滑动还是有之前的信息。

6.2 清屏处理

一个比较有效的方法是为vscode添加清屏快捷键,操作如图:

6.2.1 打开 文件->首选项->键盘快捷方式

在这里插入图片描述

6.2.2 法一:修改 Terminal.Clear

输入搜索

Terminal.Clear

在这里插入图片描述
注意右击更改when表达式为"terminalFocus",按钮为灰的就不用改!
双击此行,然后按下键盘 Ctrl + K即可设置清楚终端快捷键。

6.2.3 法二:直接编辑keybindings.json文件

点击右上角的图标,输入以下代码即可。
在这里插入图片描述

[
    {
        "key": "ctrl+k",
        "command": "workbench.action.terminal.clear",
        "when": "terminalFocus"
    }
]

清屏操作总结:先按cls,再ctrl + k(需要按文中设置快捷键)即可

7.VS Code设置代码片段(以C++为例)

VS Code设置代码片段,官网介绍

代码片段是模板,可以快速地输入重复的代码,比如循环、条件语句、注释模板等。在 VS Code中代码片段会和自动提示IntelliSense(Ctrl + Space)一起出现,也出现在专用的代码片段选择器中(在“命令面板”中插入代码片段)。还支持制表符补全:使用启用它"editor.tabCompletion": “on”,键入一个代码段前缀(触发文本),然后按Tab键插入一个代码段。

也就说, 设置自定义代码片段后,当你输入一些语句时,能够填充预设的代码!

7.1 自定义代码片段步骤

可以选择要显示代码段的编程语言,我们这里以C++为例。
打开 文件->首选项->用户代码段
在这里插入图片描述
选择C++语言配置环境(其他环境同理)
在这里插入图片描述
打开后能看到引导配置文字

{
	// Place your snippets for cpp here. Each snippet is defined under a snippet name and has a prefix, body and 
	// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 
	// same ids are connected.
	// Example:
	// "Print to console": {
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
}

说明:

  • “Print to console”代码段名称。如果未description提供,则通过IntelliSense显示。

  • “prefix” 定义一个或多个在IntelliSense中显示摘要的触发词(快捷键)

  • “body” 是一或多个内容行,插入时将作为多行内容加入。换行符和嵌入的选项卡将根据插入代码段的上下文进行格式化。$1和$2是占位符,可以通过tab进行切换。
    ⚠️注意,不可以直接输入tab,会报错!可连按4个空格实现tab效果!

  • “description” 是IntelliSense显示的代码段的可选描述

	"Add File Header": {
		"prefix": "fileheader",
		"body": [
			"/**"
			"  * @file    :${TM_FILENAME}"
			"  * @brief   :$1"
			"  * @author  :xxxx"
			"  * @version :V1.0.0"
			"  * @date    :${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}"
			"  */"
		],
		"description": "Add file describe"
	},

	"pragma once":{
		"prefix": "once",
		"body": "#pragma once"
	}

⚠️注意,如果有多个自定义代码片段,它们之间需要用逗号隔开。
以上实现了两个代码片段,通过 fileheader 和 once 就能分别引用到,如下:
在这里插入图片描述
在这里插入图片描述

下面给出常用的骨架:

  • C语言
"C语言骨架": {
		"prefix": "c",
		"body": [
			"#include<stdio.h>",
			"int main() {",
			"    ",
			"    return 0 ;",
			"}",
		],
		"description": "用户自定义的C语言骨架"
	}
  • C++
"Cpp骨架": {
			"prefix": "c++",
			"body": [
				"#include<iostream>",
				"using namespace std;",
				"int main() {",
				"    ",
				"    return 0;",
				"}",
			],
			"description": "用户自定义的Cpp骨架"
		}

变量
使用 n a m e 或 name或 name{name:default},您可以插入变量的值。如果未设置变量,则将其默认值或空字符串插入。当变量未知(即未定义其名称)时,将插入该变量的名称,并将其转换为占位符。

可以使用以下变量:

  • TM_SELECTED_TEXT 当前选择的文本或空字符串
  • TM_CURRENT_LINE 当前行的内容
  • TM_CURRENT_WORD 光标下的单词内容或空字符串
  • TM_LINE_INDEX 基于零索引的行号
  • TM_LINE_NUMBER 基于一索引的行号
  • TM_FILENAME 当前文档的文件名
  • TM_FILENAME_BASE 当前文档的文件名,不带扩展名
  • TM_DIRECTORY 当前文档的目录
  • TM_FILEPATH 当前文档的完整文件路径
  • CLIPBOARD 剪贴板中的内容
  • WORKSPACE_NAME 打开的工作空间或文件夹的名称
  • WORKSPACE_FOLDER 打开的工作空间或文件夹的路径

要插入当前日期和时间:

  • CURRENT_YEAR 本年度
  • CURRENT_YEAR_SHORT 本年度的最后两位数字
  • CURRENT_MONTH 以两位数字表示的月份(例如“ 02”)
  • CURRENT_MONTH_NAME 月的全名(例如“七月”)
  • CURRENT_MONTH_NAME_SHORT 该月的简称(例如“ Jul”)
  • CURRENT_DATE 一个月中的某天
  • CURRENT_DAY_NAME 一天的名称(例如“星期一”)
  • CURRENT_DAY_NAME_SHORT 一天的简称(例如“ Mon”)
  • CURRENT_HOUR 当前小时(24小时制)
  • CURRENT_MINUTE 当前分钟
  • CURRENT_SECOND 当前秒
  • CURRENT_SECONDS_UNIX 自Unix时代以来的秒数

要插入行或块注释,请遵循当前语言:

  • BLOCK_COMMENT_START输出示例:PHP/*或HTML<!–
  • BLOCK_COMMENT_END输出示例:PHP*/或HTML–>
  • LINE_COMMENT 示例输出:在PHP中 //
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值