C++在vscode中的多文件编程问题解读
作者:_ccd_yuan_ 发布时间:2021-06-14 13:37:04
C++在vscode中的多文件编程
相信有很多的小伙伴在一开始的时候,都会对vscode的多文件编程有很多的疑问,网上也有很多的教学,不过网上的解决方法都会对一些json文件进行修改,或者使用cmake写命令来操作,不过即使有这么多的教学我也还是没有完全学会。
所以今天我将给大家介绍一种方法可以不用修改json或者使用cmake就能够实现vcsode中C++的多文件操作。
首先我们需要创建几个需要的文件,比如main.cpp 、my_swap.h(这里就用my_swap来做例子)注意我们不需要my_swap.cpp
然后输入代码
main.cpp
#include <iostream>
#include "my_swap.h"//需要包含的头文件,可包含多个using namespace std;int main()
{
int a=2,b=1;
cout<<"a="<<a<<" "<<"b="<<b<<endl;
my_swap(a,b);
cout<<"a="<<a<<" "<<"b="<<b;
return 0;
}
my_swap.h
#pragma oncevoid my_swap(int &a,int&b)//直接将函数定义写入
{
int t=a;
a=b;
b=t;
}
如果大家是要写类的话,可以将函数定义写在class中,也可以写在class外(在同一个头文件中)
结果展示
同样也支持调试哟
vscode编译多个C++文件
tips:
launch.json中的preLaunchTask对应的是task.json中的label,两个名字一样,也就是说,运行launch.json文件之前,需要首先运行task.json文件,将cpp文件编译链接成.exe的可执行文件,launch.json通过"program": “{fileDirname}\${fileBasenameNoExtension}.exe”,直接进入编译链接后的可执行文件main.exe。
launch.json:
task.json:
问题
VScode编译多个Cpp文件时,报错显示找不到关联文件。
解决方法
需要修改task.json文件。
可以先在当前文件目录下新建一个out文件,这样生成的.exe可执行文件就都存在这个目录下,不会和.cpp文件混在一起,目录结构更清晰。这时候需要同时修改launch.json文件。
文件目录如下:
task.json:
"args": [
"-fdiagnostics-color=always",
"-g",
// 编译单个文件
// "${file}", // 只能编译一个文件
// "-o",
// "${fileDirname}\\out\\${fileBasenameNoExtension}.exe" // 这里的out文件需要新建
// 编译多个文件
"${fileDirname}\\*.cpp", // 只需要修改这一行,编译链接所有的cpp文件
"-o",
"${fileDirname}\\out\\${fileBasenameNoExtension}.exe", // 这里也有out文件
],
launch.json:
"program": "${fileDirname}\\out\\${fileBasenameNoExtension}.exe", // 添加out文件
来源:https://blog.csdn.net/m0_66230497/article/details/122374106
猜你喜欢
- 简介Java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了Java程序在各种平台下对内存的访问都能
- 前言在日常的测试工作过程中,app可能会出现闪退崩溃的情况,这个时候就需要测试同学快速抓取到崩溃日志,来有效的辅助开发定位问题,快速的去解决
- SpringMVC实现RESTful风格RESTful中文释义为”表现层状态转换“,它不是一种标准,
- 不同的加锁顺序我们来看一个不同加锁顺序的例子:public class DiffLockOrder {private int amount;
- java实现读取、删除文件夹下的文件package test.com;import java.io.File;import java.io.
- 概述从今天开始, 小白我将带大家开启 Jave 数据结构 & 算法的新篇章.队列队列 (Queue) 遵循先进先出的原则 (Firs
- Java获取文件的类型和扩展名实现代码:File file=new File("E:\\aa.jpg"); String
- System.out.print("\b") 会在控制台下往回删掉一个字符,如果你想回删多个字符就打印多个 "
- 前言Java8新特性java.time.*包学习。 自从java发布模式变更就发现自己有些跟不上他们的速度,java8还有不少没有用透而9、
- (新手写博客,主要是对自己学习的归纳总结。会对很多小细节详解。)单例模式的定义:确保一个类只有一个实例,并提供一个全局访问点。首先实例大家应
- 使用Spring3 实现用户登录以及权限认证这里我就简单介绍一下,我在实现的时候处理的一些主要的实现。1.用户登录 <form act
- Android Support Annotations &
- 多线程内容大致分两部分,其一是异步操作,可通过专用,线程池,Task,Parallel,PLINQ等,而这里又涉及工作线程与IO线程;其二是
- 文件下载/** * 下载服务 IntentService * 生命周期: * 1>当第一次启动IntentService时,Andr
- 一个线程的生命周期:新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态
- TaskAwaiter先说一下 TaskAwaiter,TaskAwaiter 表示等待异步任务完成的对象并为结果提供参
- 学过C#的人应该都知道抽象方法与虚拟方法,而很多初学者对二者之间的区别并不是很了解。今天本文就来分析一下二者之间的区别。并附上实例加以说明。
- Android 中的危险权限详细整理前言:Android 中有上百种权限,现在将所有的权限归为两类:一类是普通权限一类的危险权限普通权限是指
- 1 spring-retry是什么?以往我们在进行网络请求的时候,需要考虑网络异常的情况,本文就介绍了利用spring-retry,是spr
- 生成文字图片:/// <summary> /// 生成文字图片 /// &l