欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vscode运行多个.cpp、.h的方法(只有一个main)

程序员文章站 2022-05-24 23:46:28
...

vscode运行多个.cpp、.h的方法(只有一个main)

首先最重要的是找到g++.exe,gdb.exe, gcc.exe,在MinGW中就有,。(每个人有每个人的存储位置,下面是我的)
vscode运行多个.cpp、.h的方法(只有一个main)

我们找到之后就可以得到他们的路劲了,也就是上面那一行,这一行在后面将会用到,若是你没有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++,就是把他们两调换就行

做完上面两个文件之后,我们去运行一个项目,下面是我这个学期的课设,全部大概一千七百多行的代码,所以用来检验再合适不过了。
vscode运行多个.cpp、.h的方法(只有一个main)
全部的文件就这些,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一切准备就绪,简简单单,直接调试运行
vscode运行多个.cpp、.h的方法(只有一个main)
ok,运行成功,可以看到,我使用了hospital的功能和patient、user的功能,,,当然我没给出patient和user的代码,脑补一下就行

验证完毕