Dev C++单个源文件和项目两种编程方式介绍
Dev C++单个源文件和项目两种编程方式介绍
Dev-C++ 是一款免费、开源的 C/C++ 集成开发环境(IDE),专为初学者和中级程序员设计,具有简单易用、功能丰富等特点。
Dev C++ 支持单文件编程和项目编程两种方式。它们之间的主要区别在于如何组织代码和管理文件。
单文件编程
单文件编程意味着所有的代码都在一个文件中,通常是一个 .cpp 文件。这种方式适合小型程序或简单的练习。
操作流程:
1.打开 Dev C++: 启动 Dev C++。
2.创建新文件: 点击“文件”( File)> “新建” (New)> “源文件”( Source File)。
3.编写代码: 在打开的编辑器中输入你的代码。
4.保存文件: 点击“文件” (File)> “另存为”( Save As),选择文件位置并命名,确保文件扩展名为 .cpp。
5.编译代码: 点击“执行”(Execute) > “编译”( Compile)(或使用 F9 快捷键)。
6.运行程序: 编译成功后,点击“执行”(Execute) > “运行”( Run)(或使用 F9 快捷键)来运行程序。
【编译代码和运行程序可以合为一步,点击“执行”(Execute) > “编译运行”(Compile & Run)】
测试示例
为便捷试验,这里提供的示例源码尽可能简单完整。
大概步骤(具体见上面):
1.打开 Dev-C++,创建一个新的文件(.cpp)。
2.编写源代码文件,例如:
#include <iostream>
using namespace std;int add(int a, int b);
int subtract(int a, int b);int add(int a, int b) {return a + b;
}int subtract(int a, int b) {return a - b;
}// 主程序部分
int main() {cout << "Add: " << add(5, 3) << endl;cout << "Subtract: " << subtract(5, 3) << endl;return 0;
}
3.编译并运行代码。
项目编程
项目编程涉及创建一个项目,这个项目可以包含多个源文件、头文件和其他资源。适合较复杂的程序,便于代码组织和管理。随着项目规模的增大,多文件项目管理的优势会更加明显。
操作流程:
1.打开 Dev C++: 启动 Dev C++。
2.创建新项目: 点击“文件”( File)> “新建” (New)> “项目”( Project)。
3.选择项目类型: 在弹出的窗口中选择项目类型(如Windows Application、Console Application、Empty Project)。
4.设置项目名称和位置: 输入项目名称并选择保存位置。
5.添加源文件:
项目创建后,默认生成一个主文件( main.cpp)。
如需添加新文件:右键左侧项目窗口的 Project 名称 -> New File,或点击 File -> New -> Source File 后保存到项目目录。
在项目窗口中右键点击“源文件”,选择“添加到项目”,然后选择要添加的 .cpp 文件。可以重复此步骤来添加多个文件。
6.编译项目: 点击“执行”(Execute) > “编译”(Compile)(或使用 F9 快捷键)来编译整个项目。
7.运行程序: 编译成功后,点击“执行”(Execute) > “运行”( Run)(或使用 F9 快捷键)来运行程序。
【编译项目和运行程序可以合为一步,点击“执行”(Execute) > “编译运行”(Compile & Run)】
测试示例
顺便提示,为便捷试验,这里提供的示例源码尽可能简单完整。
大概步骤(具体见上面):
1.打开 Dev-C++,创建一个新的项目(如控制台应用程序),我这里项目类型选“Console Application”。
2. 编写源代码文件,可以是多个(如头文件和源文件):
头文件(.h):定义函数声明、类声明等。
//文件名:calculator.h
#ifndef CALCULATOR_H
#define CALCULATOR_Hint add(int a, int b);
int subtract(int a, int b);#endif
源文件(.cpp):实现函数的具体逻辑。
//文件名: calculator.cpp
#include "calculator.h"int add(int a, int b) {return a + b;
}int subtract(int a, int b) {return a - b;
}
主程序文件(.cpp):
// main.cpp
#include <iostream>
#include "calculator.h"using namespace std;int main() {cout << "Add: " << add(5, 3) << endl;cout << "Subtract: " << subtract(5, 3) << endl;return 0;
}
3.编译并运行代码。
顺便指出,通过在主程序中使用 #include 包含其他源文件,也可以实现单文件编译多个源文件。
C/C++ 的预处理器会将 #include "xxx.cpp" 指令替换为被包含文件的内容。例如:
//my_main.cpp
#include "functions.cpp" // 直接包含另一个源文件
int main() {
myFunction(); // 调用 functions.cpp 中的函数
return 0;
}
另一个.cpp文件
// functions.cpp
#include <iostream>
void myFun() {
std::cout << "Hello from functions.cpp!" << std::endl;
}
编译时,my_main.cpp 和 functions.cpp 会被合并成一个文件进行编译,生成单一可执行文件。#include 指令可以带路径,可以使用绝对路径或相对路径来指定要包含的头文件或源文件。注意,使用引号而不是尖括号指定要包含的源文件,这样编译器首先会在当前源文件所在的目录中查找指定的文件,如果找不到,则会在标准头文件目录中查找。
如果 functions.cpp和my_main.cpp在同一目录下:
#include "functions.cpp"
如果 functions.cpp 在子文件夹中(例如 src 文件夹),需在 #include 中指定路径:
#include "src/functions.cpp" // 相对路径(以主文件所在目录为起点)
不推荐这种方式,这种方法在小型项目或快速开发场景中非常实用,但随着项目规模的增大,建议逐步转向多文件项目管理,以提高代码的可维护性和编译效率。
单文件开发和多文件项目管理的主要区别在于代码的组织方式和项目的复杂度,而不是代码的功能本身。随着项目规模的增大,多文件项目管理的优势会更加明显。
小结:
单文件编程,指直接编写、编译和运行一个独立的源代码文件(如 .c 或 .cpp 文件),无需创建复杂的项目结构。适合小型程序或学习阶段快速测试代码。
项目编程,指通过创建**项目(Project)**来管理多个关联文件(如多个 .c/.cpp 文件、头文件 .h、资源文件等)。适合中大型程序或需要模块化开发的场景。
附录
Dev C++使用简明实用教程【修订版】https://blog.csdn.net/cnds123/article/details/124785425
Dev-C++的多文件编程介绍 https://blog.csdn.net/cnds123/article/details/125905593
C++基础知识与开发环境【修订版】https://blog.csdn.net/cnds123/article/details/108832790
C++程序的基本组成简介 https://blog.csdn.net/cnds123/article/details/118336522
C++将函数声明放在头文件中的示例https://blog.csdn.net/cnds123/article/details/132214317
C++头文件和库及两者的关系 https://blog.csdn.net/cnds123/article/details/132038160
OK!
相关文章:
Dev C++单个源文件和项目两种编程方式介绍
Dev C单个源文件和项目两种编程方式介绍 Dev-C 是一款免费、开源的 C/C 集成开发环境(IDE),专为初学者和中级程序员设计,具有简单易用、功能丰富等特点。 Dev C 支持单文件编程和项目编程两种方式。它们之间的主要区别在于如何组…...
用AbortController取消事件绑定
视频教程 React - 🤔 Abort Controller 到底是什么神仙玩意?看完这个视频你就明白了!💡_哔哩哔哩_bilibili AbortController的好处之一是事件绑定的函数已无需具名函数,匿名函数也可以被取消事件绑定了 //该代码2秒后点击失效…...
解决:Fontconfig head is null, check your fonts or fonts configurat
文章目录 问题解决方案安装字体依赖包强制刷新字体缓存验证是否生效 个人简介 问题 在使用 Java 环境部署或运行图形相关应用时,比如图片验证码,偶尔会遇到如下报错: Fontconfig head is null, check your fonts or fonts configurat意味当…...
this指针 和 类的继承
一、this指针 Human类的属性fishc与Human()构造器的参数fishc同名,但却是两个东西。使用this指针让构造器知道哪个是参数,哪个是属性。 this指针:指向当前的类生成的对象 this -> fishc fishc当前对象(…...
无锡无人机驾驶证培训费用
无锡无人机驾驶证培训费用,随着科技的迅速发展,无人机在众多行业中发挥着举足轻重的作用。从影视制作到农业监测,再到物流运输与城市规划,无人机的应用场景不断扩展,因此越来越多的人开始意识到学习无人机驾驶技能的重…...
反向查询详解以Django为例
以下给出两张表格 class User(AbstractUser):mobilemodels.CharField(max_length11,default0,uniqueTrue,verbose_name手机号)email_activemodels.BooleanField(defaultFalse,verbose_name邮箱验证状态)default_address models.ForeignKey(Address, related_nameusers, nullT…...
我们如何思考AI创业投资
🎬 Verdure陌矣:个人主页 🎉 个人专栏: 《C/C》 | 《转载or娱乐》 🌾 种完麦子往南走, 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️ 声明:本文作者转载,原文出自…...
详解在 MySQL 中建索引时的注意事项
MySQL 中建索引时的注意事项 1. 索引的必要性与设计2. 复合索引与列顺序3. 索引数量与维护4. 索引类型选择5. 特殊注意事项 1. 索引的必要性与设计 使用场景:优先为在 WHERE、JOIN、ORDER BY 和 GROUP BY 中频繁使用的列创建索引。合理的索引设计能显著提升查询效率…...
LabVIEW 中数字转字符串常用汇总
在 LabVIEW 编程环境里,数字与字符串之间的转换是一项极为基础且重要的操作,广泛应用于数据处理、显示、存储以及设备通信等多个方面。熟练掌握数字转字符串的方法和技巧,对编写高效、稳定的程序起着关键作用。接下来,我们将全面深…...
蓝桥杯 C/C++ 组历届真题合集速刷(二)
一、0ASC - 蓝桥云课 (单位换算)算法代码: #include <iostream> using namespace std; int main() {printf("%d",L);return 0; } 二、0时间显示 - 蓝桥云课 (单位换算)算法代码: #inclu…...
【接口自动化_数据格式与类型】
在HTTP接口的自动化测试中,请求的数据格式和内容类型是两个密切相关但又有所区别的概念。以下是它们的分类和详细说明: 一、数据格式 数据格式是指请求体(Body)中数据的组织方式,常见的数据格式有以下几种࿱…...
JavaScript/React中,...(三个连续的点)被称为 扩展运算符(Spread Operator) 或 剩余运算符(Rest Operator)
const processOrder (order) > {const tax order.total * 0.1;const finalAmount order.total tax;return { ...order, tax, finalAmount }; }; 解释一下,特别:...?在JavaScript/React中,...(三个连续的点)被称…...
网络带宽测速工具选择指南iperf3 nttcp tcpburn jperf使用详解
简介 本文主要介绍内网(局域网)与外网(互联网)的网络带宽测速工具下载地址、选择指南、参数对比、基本使用。 测速工具快速选择指南 测速工具下载地址 iperf 官网下载链接:iperf.fr/iperf-download.php该链接提供了不…...
源代码保密解决方案
背景分析 随着各行各业业务数据信息化发展,各类产品研发及设计等行业,都有关乎自身发展的核心数据,包括业务数据、源代码保密数据、机密文档、用户数据等敏感信息,这些信息数据有以下共性: — 属于核心机密资料&…...
网络安全小知识课堂(十二)
SQL 注入:一行代码如何毁掉整个数据库? 引言 想象一下:用户在一个搜索框中输入关键词,网站却突然崩溃,所有数据被清空 —— 这不是电影情节,而是 **SQL 注入攻击(SQL Injection)**…...
PyCharm使用Flask启动项目后,如何修改文件,开启启动加载或是热启动,不用重启项目,直接生效。
PyCharm使用Flask启动项目后,每次修改完文件比如html、py文件都要重启项目才生效,在测试时很不方便,如何设置热启动,修改完文件后直接生效了? 解决方法 1、app.py文件,设置debugTrue。开启调试模式。 开…...
SpringCloud微服务(一)Eureka+Nacos
一、认识 微服务技术对比: SpringCloud: 版本匹配: 二、服务拆分以及远程调用 消费者与提供者: Eureka: 搭建EurekaServer: Ribbon负载均衡: 实现原理: IRule:规则接口…...
【Java设计模式】第4章 简单工厂讲解
4. 简单工厂模式 4.1 简单工厂讲解 定义:由一个工厂对象决定创建哪种产品类的实例,属于创建型模式,但不属于GoF 23种设计模式。适用场景: 工厂类负责创建的对象较少。客户端仅需传入参数,无需关心对象创建逻辑。优点: 客户端只需传入参数即可获取对象,无需知道创建细节…...
深度学习天崩开局
李沐大神的d2l包导入, 这玩意需要python311版本,我现在版本已经313了,作为一个天生要强的男人,我是坚决不向低版本低头的。 然后我就研究啊,各种翻资料啊,然后deepseek加豆包都翻烂了, 最终所…...
【详细图文】在VScode中配置python开发环境
目录 一、下载安装VSCode 1、官网下载VSCode 2、安装VSCode 3、汉化vscode (1)已自动下载汉化版插件 (2)未自动下载汉化版插件 二、 下载安装Python 1、官网下载Python 2、安装Python (1)双击打开…...
Unity遮挡剔除与视锥剔除混合策略技术详解
一、核心剔除技术原理对比 1. 视锥剔除(Frustum Culling) 原理:根据物体包围盒与摄像机视锥体的相交测试,移除非可见物体 优势: 计算成本低(平均0.1ms/万物体) 完全自动执行 局限:…...
Java面试黄金宝典34
1. 主键索引底层的实现原理 定义 主键索引是数据库中用于唯一标识表中每一行记录的索引,常见的底层实现是 B 树结构。B 树是一种平衡的多路搜索树,由内部节点和叶子节点组成。内部节点只存储索引键和指向下一层节点的指针,不存储实际数据&am…...
VR体验馆如何用小程序高效引流?3步打造线上预约+团购裂变系统
VR体验馆如何用小程序高效引流?3步打造线上预约团购裂变系统 一、线上预约的核心价值:优化体验,提升转化 减少客户等待时间 通过小程序预约功能,客户可提前选择体验时段,避免到店排队。数据显示&#…...
使用 node.js 和 MongoDB 编写一个简单的增删改接口 demo
文章目录 前言一、环境准备二、项目结构三、环境变量四、连接数据库3.1. connect.js 文件 五、定义数据模型5.1. BannerModel.js 文件 六、实现 server 接口6.1. server.js 文件 七、服务文件7.1. app.js 文件 八、感谢 前言 Mongoose 是一个在 Node.js 环境中操作 MongoDB 数据…...
【基于Vue3组合式API的互斥输入模式实现与实践分享】
基于Vue3组合式API的互斥输入模式实现与实践分享 目录 背景与痛点设计思路技术实现使用场景与案例遇到的问题与解决方案最佳实践总结 1. 背景与痛点 在表单交互设计中,我们经常面临这样的场景:多种输入方式互斥。例如,在评分系统中&#…...
PCL拟合空间3D圆周 fit3DCircle
PCL版本 1.15.0 main.cpp #include<vector> #include<iostream> #include <array> #include <string> #include <windows.h> #include <omp.h> #include <charconv> // C17 #include <cstdlib> #include<chrono> #in…...
【Redis】——最佳实践
目录 一.键值设计 1.如何优雅的设计key结构 2.拒绝BigKey 3.选择合适的数据结构 4.总结 二.批处理优化(海量数据批处理) 1.Pipeline 2.集群模式下的批处理 三.服务端优化 1.持久化配置 2.慢查询问题 1.记录慢查询 2.找到慢查询 3.集群最佳…...
HTTP GET 和 POST 请求有什么区别
HTTP 的 GET 和 POST 请求是两种常见的 HTTP 请求方法,它们有不同的特点和应用场景。以下是它们的主要区别: 1. 用途 GET:用于从服务器获取数据或资源。GET 请求会附带查询参数在 URL 中,通常用于请求数据,如加载网页…...
Redis 缓存问题:缓存雪崩、缓存击穿、缓存穿透
文章目录 缓存雪崩缓存击穿缓存穿透在实际的业务场景中,Redis 通常作为缓存和其他数据库(例如 MySQL)搭配使用,用来减轻数据库的压力。但是在使用 Redis 作为缓存数据库的过程中,可能会遇到一些常见问题,例如缓存穿透、缓存击穿和缓存雪崩等。 缓存雪崩 缓存雪崩是指缓存…...
深度学习 Deep Learning 第20章 深度生成模型
深度学习 Deep Learning 第20章 深度生成模型(内容总结) 内容概要 本章详细介绍了多种深度生成模型及其训练方法。这些模型包括玻尔兹曼机(Boltzmann Machines)、受限玻尔兹曼机(RBM)、深度信念网络&…...
