vscode运行多个.cpp、.h的方法(只有一个main)
程序员文章站
2022-05-24 23:46:28
...
vscode运行多个.cpp、.h的方法(只有一个main)
首先最重要的是找到g++.exe,gdb.exe, gcc.exe,在MinGW中就有,。(每个人有每个人的存储位置,下面是我的)
我们找到之后就可以得到他们的路劲了,也就是上面那一行,这一行在后面将会用到,若是你没有MinGW,建议去下载一个。
接下来,我们开始配置两大文件,他们就是.vscode文件夹下的tasks.json、launch.json,这两个文件是调试的基础,同时也是我们编译多个cpp的基础。
下面是我目前(2020/7/26)使用的两大文件,都是我特意选出来的,仅供参考!
tasks.json
{
"tasks": [
{
"type": "shell",
"label": "g++.exe build active file", //与launch.json的preLaunchTask一致
"command": "C:\\MinGW\\MinGW\\mingw\\mingw64\\bin\\g++.exe", //g++.exe的路径
"args": [
"-g",
"${workspaceFolder}\\**.cpp", //${workspaceFolder}表示.vscode所在的那个文件夹的路径
"-o",
"${workspaceFolder}\\${fileBasenameNoExtension}.exe" , //与launch的program对应
"-std=c++17"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": {
"owner": "cpp",
"fileLocation":[
"relative", "${workspaceFolder}"
],
"pattern":{
"regexp": "%(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
],
"version": "2.0.0"
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++", //可以自己定义,会在侧边栏显示
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\${fileBasenameNoExtension}.exe", //${fileBasenameNoExtension}表示当前打开的文件名不包括后缀
"args": [ "-std=c++20" ],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, //false:表示调试时不弹出控制台窗口(类似dev、code blocks那种黑框);true:弹出
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW\\MinGW\\mingw\\mingw64\\bin\\gdb.exe", //gdb.exe路径,windows要加.exe
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++.exe build active file" //调用tasks.json,与其中的label一致
}
]
}
我们可以看到,其中用到g++.exe,gdb.exe的路径,没有看到gcc是因为我这个学期主要学习c++,原则上,若是c的就需要用gcc,是c++的就需要g++,就是把他们两调换就行
做完上面两个文件之后,我们去运行一个项目,下面是我这个学期的课设,全部大概一千七百多行的代码,所以用来检验再合适不过了。
全部的文件就这些,main位于hospital.cpp中,其他的就是一些.h文件的函数了,注意这些.cpp中,只能由一个main,若不然,我也不知道怎么运行,请另请高就~
下面是主函数所在文件的代码
#include "drug.h"
#include "patient.h"
#include "user.h"
#include <cmath>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <string>
#include <time.h>
using namespace std;
int door = 1, m = 0;
int main() {
patient p[100];
drug p1[100];
user people;
void Home(patient *, drug *);
int nu = 0, i, i2 = 0;
fstream myfile1("d:\\drug.dat", ios::in);
if (!myfile1) {
cout << "不存在drug.dat文件" << endl;
ofstream fout1("d:\\drug.dat");
if (fout1) {
//创建成功
cout << "自动创建成功" << endl;
fout1.close();
}
}
myfile1.close();
ifstream myf1("d:\\drug.dat", ios::in);
myf1 >> p1;
while (door == 1) {
m = 0;
cout << "\\\\\\\\\\ 1管理员登录 2游客登录 3退出 //////\n";
cin >> i;
if (i == 1) {
i2 = menurl();
if (i2 == 1) {
fstream myfile("d:\\patient.dat", ios::in);
if (!myfile) {
cout << "不存在patient.dat文件" << endl;
ofstream fout("d:\\patient.dat");
if (fout) {
//创建成功
cout << "自动创建成功" << endl;
fout.close();
}
}
myfile.close();
ifstream myf("d:\\patient.dat", ios::in);
myf >> p;
while (m == 0) {
Home(p, p1);
}
ofstream my("d:\\patient.dat");
my << p;
my.close();
ofstream my1("d:\\drug.dat");
my1 << p1;
my1.close();
} else if (i2 == 0) {
door = 1;
}
} else if (i == 2) {
nu = drugnumnull(p1) - 1;
cout << "登录成功\n";
cout << "只能查看药品信息\n\n";
for (int q = 0; q <= nu; q++) {
cout << "\n";
p1[q].cdrugnum().cname().csellingprice().cquantityin().cproducedTime();
p1[q].ceTime();
}
cout << "\n查询完毕!\n\n";
} else if (i == 3) {
door = 0;
} else {
cout << "错误\n";
door = 1;
}
}
return 0;
}
void Home(patient p[], drug p1[]) {
int i = 0;
cout << "1 病号管理 2 药品管理 3 结束\n";
cin >> i;
switch (i) {
case 1:
patientm(p);
break;
case 2:
drugm(p1);
break;
case 3:
m = 1;
break;
default:
cout << "错误\n";
Home(p, p1);
break;
}
}
ok一切准备就绪,简简单单,直接调试运行
ok,运行成功,可以看到,我使用了hospital的功能和patient、user的功能,,,当然我没给出patient和user的代码,脑补一下就行
验证完毕