vscode 使用脚本编译C/C++
关于gcc / g++ 编译命令
- 详细内容参考这篇博客
- 这里介绍常用的命令:
- 假设你的C文件叫做
ff.c
,那么编译他的命令就是gcc ff.cpp -o ff
,这时你的源程序目录下就会生成可执行文件ff.exe
- 再在终端下执行
ff
(cmd)或./ff
(powershell)就可以运行 - 指定编译的C语言标准:
-std=c11
(设为c11标准) - 静态编译:
-static
- 开启O2级别优化:
-O2
- 假设你的C文件叫做
使用.bat
脚本实现自动化编译运行
- 首先若要在vscode的集成的终端中运行文件,必须以打开文件夹的方式编写你的程序
- 假设你的文件夹的绝对路径是
C:\Users\ff\Desktop
,那么我们的.bat
文件也要放在这个目录下。 - 下面是我的
.bat
文件的示例
|
|
-
下面是简单的解释:
-
关闭命令回显
-
打开工作目录(替换成你的工作目录)
-
以c11标准 O2优化编译test.c文件(替换成你自己的.c文件) 并声称test.exe可执行文件
-
运行test.exe
-
-
将上面的文件保存在你的目录下,命名为
run.bat
,在vscode中按ctrl+` 打开终端 -
输入
run
(cmd)或./run
(powershell)即可运行查看结果
结合分屏的输入输出重定向方法
- 很多时候我们需要向程序输入大量的数据,一个个手动输入就会特别繁琐,因此我们需要学习将输入输出重定向到文件中,这样只要一次将输入写入文件,此后就不需要再次输入重复的内容了。
vscode的分屏功能
- 按
ctrl+\
开启分屏功能,vscode中最多可以分左中右三屏,我们在文件夹下创建两个文件in.txt
和out.txt
分别作为输入和输出被重定向的文件,并分别在左右屏打开,如图所示
-
向左移动编辑器组的快捷键是
ctrl+k leftarrow
,向右为ctrl+k rightarrow
-
三个屏从左到右依次标号为1、2、3,切换焦点到对应的编辑器的快捷键为
ctrl+1/2/3
重定向输入输出
freopen
|
|
- 将上面两句freopen加到main函数的最前面即可,关于文件读写的其他操作欢迎关注后续的博客。
运行时重定向
-
上述做法有一个明显的弊端——算法竞赛时需要从标准的输入输出来读取,因此我们在本地测试完提交自己的代码到OJ上面时需要注释掉这两句话,而新手甚至老手都会常常忘记这一点,造成无谓的WA,因此需要下面的方法。
-
将
run.bat
中运行test.exe的命令test
后加上<in.txt >out.txt
即可,效果如图:
vscode配置C/C++ debug
配置launch.json
文件
-
在左侧栏中选择第四项打开debug侧栏,点击上方的绿色箭头,会弹出选择环境,选择
C++(GDB/LLDB)
,提示没有配置
,选择打开launch.json
,选择C++(GDB/LLDB)
-
将下面的内容复制到你的文件中,并按注释修改相关内容
12345678910111213141516171819{"version": "0.2.0","configurations": [{"name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示"type": "cppdbg", // 配置类型,这里只能为cppdbg"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)"launchOptionType": "Local", // 调试器启动类型,这里只能为Local"targetArchitecture": "x86", // 生成目标架构,一般为x86或x64,可以为x86, arm, arm64, mips, x64, amd64, x86_64"program": "${file}.exe", // 将要进行调试的程序的路径"miDebuggerPath":"C:\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false"cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台"preLaunchTask": "gcc" // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc}]}
配置task.json
文件
-
再次点击绿色箭头,点击
配置任务运行程序
,任意选择一项生成命令,编辑task.json
文件如下:1234567891011121314151617{"version": "0.1.0","command": "gcc","args": ["-g","${file}","-o","${file}.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}}} -
这时再点击绿色小箭头,或在
.c
文件处于焦点状态时(即光标在.c)文件处按F5
即可出现如下图的调试界面 -
至此我们的配置工作全部完成
常用快捷键
- 下一步
F10
- 单步运行
F11
- 停止
Shift+F5