本文原本为博客园发布的一篇整理vscode编写c/c++全部使用心得的文章
喜欢的话可以收藏转发加关注
我将详细介绍如何在windows上实现编译/运行/调试C以及C++,如果你是一位初学者,请完全按照文章的推荐步骤进行,如果觉得图片不够清晰,请点击一下图片会显示清晰的大图
1、打开你要写c++程序的文件夹,我们这里新建一个Test文件夹并打开test,打开后:使用VScode运行调试C/C++,在左侧打开的目录中新建一个 main.cpp 文件。2、新建后点左侧的调试按钮(英文:Debug),可以看到,目前没有调试。
一、前期准备
首先在微软官网下载并安装好visual stdio code,建议在安装时勾选上添加到资源管理器上下文菜单
勾选后在文件的右键菜单中会多出 Open with Code这个选项,也就是用vscode打开当前文件,vscode除了支持各种文本文件以外,还可以查看图片和预览Markdown
2. 因为vscode只是一个代码编辑器,没有自带有C/C++的编译器,因此我们需要安装一个C/C++编译器并且设置环境变量,推荐mingw系列(指的是mingw或者mingw-w64,相比于mingw,mingw-w64更加强大),移动端vscode怎么运行,因为mingw也是后面提到的Code Runner插件默认的编译器,调试也是用的mingw。因为网络问题mingw-w64很难下载,推荐离线下载然后手动添加环境变量
离线下载的地址为:
MinGW-w64 - for 32 and 64 bit Windows
sourceforge.net
为节省篇幅,具体的细节请参照:
windows下安装mingw-w64 - tyuiop - 博客园
www.cnblogs.com
此时我们要验证一下mingw是否可用,打开cmd输入gcc -v,出现版本信息就表明mingw是可用的,如果未出现版本信息则需要再检查一下,如果这里出现问题,后面全部无法进行
3. 安装必要的插件,打开vscode,点击左面竖排第五个按钮,搜索并安装上如下三个插件
chinese(simplified)C/C++Code Runner
二、编译运行程序
编译运行程序将介绍两种方法
使用之前安装好的Code Runner插件一键编译运行程序打开vscode的集成终端使用命令行编译和运行
#include <stdio.h>int main(){ char name[100]; printf("What is your name?\n"); scanf("%s",name); printf("Hello,%s,nice to meet you!\n",name);}
vscode怎么运行代码 1、加载代码文件 打开编辑器,加载要运行的代码文件。2、点击运行 点击菜单栏上的运行菜单。3、点击以非调试模式运行 点击下拉菜单上的以非调试模式运行。4、选择运行环境 点击选择运行环境就可以了。以上。
但现在会出现下面的情况
程序段中使用了scanf函数从键盘读取一串字符,但此时无法输入数据,也无法结束程序,先关闭vscode再重新打开一下,也就是重启一下vscode
然后依次打开:文件>首选项>设置>用户>拓展>Run Code Configuration
找到Run In Terminal打上勾
现在程序已经可以正常运行了,此时程序是运行在vscode的集成终端上,并不会额外弹出一个控制台黑窗口
这就是使用Code Runner插件运行程序的方法,点击右上角的垃圾桶图标可以直接结束程序运行
vscode目前的集成终端存在这样一个问题,如果当前输入法是中文状态,直接输入数字时会卡住好长一会,解决方法是输入前先切换的英文输入状态,最好是在输入法设置中将首选项设置为英文
Code Runner执行的指令可以修改,可以将默认使用的gcc/g++换成clang等,确实有需要的请看:修改Code Runner指令
下面将描述通过命令行指令编译运行程序的过程,刚接触的初学者在有些地方不明白也没关系,但希望你也能认真的看一遍
上面介绍的是一种偷懒的方法,它存在局限,看一个例子
include <stdio.h>int main(){ SOCKET client_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); printf("Compile successfully!");}
C:\Users\tangm> cd "c:\Users\tangm\Desktop\" ; if ($?) { g++ Untitled-1.cpp -o Untitled-1 } ; if ($?) { .\Untitled-1 }
如果是使用了winsock2.h,同时又是使用gcc/g++编译,在编译时我们应该在编译指令中额外添加-lwsock32指令,而Code Runner模板中并没有这条指令
即完整的编译指令应该是:
g++ xxx.cpp -o xxx.exe -lwsock32
为了解决这个问题,我们必须使用原始而科学的方法,直接在集成终端上用命令行编译和运行,vscode拥有一个集成终端,在集成终端上编写指令就相当于在cmd(win7默认)或者powershell(win10默认)等系统终端上编写指令
按 Ctrl+~ 打开集成终端(其实是"`",打"~"是为了方便大家找到),先用cd命令切换到源文件所在的文件夹(我的在桌面),再使用gcc/g++编译为可执行程序,最后运行程序,如果暂时不是很懂命令行,可以稍微学一下或者直接跳过这里
1、在小程序开发工具中把项目搭建好。2、在vscode中打开建好的小程序项目,这个时候小程序项目目录下面会生成几个文件夹,注意别提交到svn里面。3、进行小程序的插件安装,先搜索安装vscodeweappapi,这是小程序的语法结构api。
三、调试程序
当程序遇到匪夷所思的BUG时,我们可以单步调试来定位错误,vscode拥有非常人性化的调试功能,支持添加断点,添加监视,显示鼠标指向变量的值,调试控制台查询变量值,详细细节我录制了一个演示视频,为了便于演示,我编写了一个常规的快速排序,从小到大排序十个数,仅仅是为了便于演示调试功能,初学者不理解不要紧,对于熟悉算法的同学就让你见笑了
使用vscode调试程序示范
更加高清的视频可以看上传到b站的版本
www.bilibili.com
下面开始正式配置调试环境
首先在电脑上你习惯的位置新建一个文件夹,用于存放编写的代码,接下来配置好的调试环境,仅会对存放在这一个文件夹以及文件夹的子目录里程序生效!
务必注意,调试的文件名和文件路径中不能出现中文字符!!否则将无法启动调试!
这是由于调试用到的mingw中的gdb不支持中文路径!并非是vscode的原因,下面是两个错误示范
新建好文件夹后,在vscode界面,点击:文件>打开文件夹,打开刚刚新建的文件夹(我的文件夹名叫CODE)
1、首先在Vscode中,我们点击运行菜单按钮。2、然后我们就可以在这里按下启用调试按钮进行启动。3、此时,咱们也可以按下F5快速启动程序1位粉丝 首先在Vscode中,我们点击运行菜单按钮。然后我们就可以在这里按下启用调试按钮。
再点击新建文件夹在打开的文件夹下新建一个 .vscode文件夹(注意前面的"."号)
然后在.vscode文件夹下新建两个json文件分别叫做
launch.jsontasks.json
本来这些是可以自动生成的,但有的地方不方便阐述,因此直接手动新建
然后将下面的代码复制到对应的json文件中去并保存
launch.json
launch.json中需要修改一处:"configurations"中"miDebuggerPath"选项需要设置为你的调试程序gdb.exe所在位置的绝对路径,这里的是我电脑上mingw -w64的安装位置
无论安装的是mingw还是mingw-w64,都会有一个gdb.exe在安装目录的bin文件夹下,一定要把对应的路径修正否则无法调试
{ "version": "0.2.0","configurations": [ { "name": "C/C++","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","miDebuggerPath": "C:/Program Files/mingw64/bin/gdb.exe","preLaunchTask": "g++","setupCommands": [ { "description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true } ],},]}
tasks.json
{ "version": "2.0.0","command": "g++","args": [ "-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe" ],"problemMatcher": { "owner": "cpp","fileLocation": [ "relative","${workspaceRoot}" ],"pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$","file": 1,"line": 2,"column": 3,"severity": 4,"message": 5 } },"group": { "kind": "build","isDefault": true }}
事实上现在已经可以正常调试了
1、我们打开了一个脚本文件,希望直接执行这个脚本文件,就可以打开命令面板,运行 “在活动终端中运行活动文件”(Run Active File In Active Terminal),这样这个脚本就会在当前打开的集成终端中运行了。”2、我们也可以选中编辑。
并且此时可以按 ctrl+shift+b 直接调用配置好的g++ task 编译程序而不运行程序,类似于一些IDE的编译选项
测试一下,出于习惯,我在CODE文件夹下再新建一个C_CPP文件夹用于存放C/C++代码,然后新建一个.cpp文件将我之前视频演示中的代码粘贴进去,并在适当的地方添加上断点
#include <bits/stdc++.h>using namespace std;void quicksort(int A[],int l,int r){ int m=l; for(int i=l;i<r;i++){ if(A[i]<A[r]){ swap(A[i],A[m]); ++m; } } swap(A[m],A[r]); if(m>l+1)quicksort(A,l,m-1); if(m<r-1)quicksort(A,m+1,r);}int main(){ int A[10],n; cin>>n; for(int i=0;i<n;i++){ cin>>A[i]; } quicksort(A,0,9); for(int i=0;i<10;i++){ cout<<A[i]<<endl; }}
按f5或者启动调试的按钮启动调试,程序执行到断点处会停下
六个按钮分别代表
继续执行到下一个断点处执行下一条语句,遇到函数直接执行完不会跳转进函数执行下一条语句,遇到函数会跳转进函数继续单步执行跳出当前所在的函数,如果是主函数会结束程序重新启动调试结束调试
如果是希望像我视频演示中一样,启动调试后不再额外显示黑窗口而是像之前Code Runner插件那样在界面下方显示终端进行调试
只需将launch.json中的"externalConsole"后面的值由true改为false
在单步调试的过程中我们可以添加监视来实时监视变量或表达式值的变化
也可以在调试控制台中输入想获取结果的变量名或者表达式获得当前的值
或者直接将鼠标光标移动到变量位置上,会自动显示当前变量的值
如果数组开得过大或者是一些结构较复杂的类或结构体,查询或显示值可能会导致调试程序崩溃
记住:调试是属于工作区设置,当前配置的调试环境只会对当前.vscode文件夹所在路径下的文件生效,如果要换用别的文件夹,把.vscode这个文件夹拷贝过去即可
最后,如果还存在什么疑问或者发现什么问题,欢迎在评论里指出
如果给您解决了问题,不妨给我点个赞呢!
学习C/C++的伙伴可以私信回复小编“学习”领取全套免费C/C++学习资料、视频