Dev C++使用简明实用教程【修订版】
Dev C++的使用
使用高级语言编程时,我们通常使用一个集成开发环境IDE(Integrated Developing Enviroment,简称IDE)来进行编辑、编译、运行和调试工作。
Dev-C++是一个Windows环境下C/C++的集成开发环境(IDE),它是一款自由软件,遵守GPL(General Public License,通用性公开许可证)。是一个免费软件,最早是由 BloodShed 公司开发的,然后由 Orwell 接手进行维护,陆续开发了几个版本, 已停止更新,也就是说Dev-C++的国外作者最终版本是2016年发布的v5.11,已经多年未更新了,现在的更新开发,都是一些爱好者基于4.9.9.2.Dev-C++ 最新版本5.11进行的。
特点:轻量级、安装便捷,界面简洁、适合教学和小型项目开发。
Dev-C++ 的原始官网已关闭,推荐从 SourceForge获取经典版本(如 5.11)。https://sourceforge.net/projects/orwelldevcpp/
如果你在国内访问遇到困难,可以通过一些国内的镜像地址或网盘链接下载,例如极客应用 https://www.gy328.com/app/dev-c/
下载之后开始安装。安装过程很简单,按照对话框的操作提示执行即可,在此略过不叙。可以参考:C++基础知识与开发环境
https://blog.csdn.net/cnds123/article/details/108832790
在Windows中安装完毕之后,在桌面上会出现如下图所示的图标:
双击 Windows 桌面上的 Dev-C++ 图标,可以启动Dev-C++。
启动后显示如下:
如果不想用英文界面,想改为中文界面,可单击菜单栏中“Tools"的"Environment Options"命令项,参见下图操作:
Dev C++ 支持单个源文件编程(初学者基本都是在单个源文件下编写代码),那么不用创建项目,如果有多个源文件,才需要创建项目。(详见后面的补充2)
新建源文件
打开 Dev C++,在上方菜单栏中选择“文件 --> 新建 --> 源代码”:
或者,按下Ctrl+N组合键,都会新建一个空白的源文件,如下图所示:
在空白文件中输入如下代码:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello,这是我的第一个C++程序!"<< endl;
return 0;
}
参见下图:
注意: 除了中文的字符串,代码必须在英文输入环境下编辑程序,即为了输入程序,你必须切换到英文输入环境下。
请及时保存源码文件
在上方菜单栏中选择“文件 --> 保存”,或者按下Ctrl+S组合键,都可以保存源文件。参见下图:
提示:C++是在C语言的基础上进行的扩展,C++已经包含了C语言的全部内容,Dev C++和大部分 IDE 一样,默认创建的是C++文件,若不加扩展名(.cpp)则自动添加之。
Dev C++界面上依次显示有菜单栏和两行工具栏。其中第一行工具栏是平时使用最多的,其各个按钮的功能如下图所示:
生成可执行程序
使用菜单“运行 --> 编译”,就可以完成 hello.cpp 源文件的编译工作:
或者,直接按下F9键,也能够完成编译工作。
如果代码没有错误,会在下方的“编译日志”窗口中看到编译成功的提示:
编译完成后,打开源文件所在的目录,会看到多了一个名为hello.exe的文件,这就是最终生成的可执行文件。
双击 hello.exe 运行,出现如下图运行窗口:
可以将编译运行合二为一:使用菜单“运行 -->编译运行”,或者,直接按下F11键,如果代码没有错误,就会出现如上图的运行窗口。
Dev-C++ 初学者常见编译错误及其解决办法 https://zhuanlan.zhihu.com/p/259198871
Dev-C++ 中的程序调试方法
调试(Debug)是泛指重现软件缺陷(bug)问题,定位和查找缺陷根源,最终解决缺陷的过程。 所谓调试程序,就是控制编译器一行一行地执行代码,过程中可以清楚看到每个变量值的变化情况、函数的调用过程等,进而发现程序中隐藏的错误或者低效的代码。
下面给出一个用来调试的C++程序例子
#include <iostream>
using namespace std;
int add(int a,int b){
int c = a+b;
return c;
}
int main(){
int a=10,b=20;
int sum = add(a,b);
cout << "sum = "<< sum<< endl;
return 0;
}
Dev C++调试程序
默认情况下,程序会瞬间从开头执行到结尾,除非中途出现错误(称为“运行时错误”,比如读写内存失败、数组越界等)。要想让程序暂停执行,就需要设置一个断点。
所谓断点(BreakPoint),可以简单地理解成障碍物,汽车遇到障碍物不能通行,程序遇到断点就会暂停执行。Dev C++ 给程序设置断点的方法很简单,想在哪一行代码处暂停执行,直接单击代码所在行的行号即可。
编译时可以检查出源代码中的语法错误,但是检查不出源代码中的逻辑错误。有时候程序虽然能够编译并运行,但是运行结果却不是预想的结果,那就是因为源代码中存在有逻辑错误,此时需要借助于程序调试(Debug)手段,下面简要介绍具体使用方法。
Dev-C++ 没有单独的“调试”菜单,只是在“运行[R]”菜单下面有几个菜单项与调试有关:“切换断点 F4”、“调试 F5”、“停止运行 F6”。同时在工具栏上有 “调试 F5”、“停止运行 F6”按钮。读者需要了解这几个菜单和按钮,然后按下述步骤进行操作。
在使用调试功能之前,请注意应该选择含用“调试”的编译器配置方案。参见下图:
若当前选定的编译器配置方案中不含有调试信息,Dev-C++ 会弹出对话框提示说没有调试信息,不能启动调试。请点击“确定”按钮,然后重新选择带有“调试”的编译器配置方案,再重新进行编译和调试。
【Debug、Release和Profiling是不同的编译和运行模式,简要说明如下:
Debug模式:在这个模式下,编译器生成的可执行文件会包含调试信息。这些信息将被用于调试程序时跟踪代码的执行,包括变量的值,函数的调用和系统调用等等。在Debug模式下,编译器通常不对代码进行优化,这使得编译的速度比较慢。此外,这种模式下生成的可执行文件体积较大,因为调试信息也被包含在内。
Release模式:在这个模式下,编译器对程序进行一定程度的优化,以使程序更快地执行。编译器通常会移除一些调试信息,因此编译的速度比Debug模式更快。生成的可执行文件也比Debug模式下更小。
Profiling模式:这是一种专门为性能分析设计的模式。在这个模式下,编译器生成的可执行文件包含了一些额外的信息,可以用于分析程序运行时的性能瓶颈。这些信息通常被称为“profiling信息”,可以被用于分析程序的CPU使用情况、内存使用情况等等。编译器通常会对代码进行优化以提高程序运行时的性能。
需要注意的是,不同的编译器可能会对这些模式进行不同的实现。这些模式所提供的优化级别和额外的调试信息也可能因编译器不同而有所不同。因此,在使用这些模式时,需要了解具体编译器的实现方式和对应的文档。】
然后,点击工具栏上的“调试”按钮(快捷键 F5),或点击菜单“运行 –> 调试 F5”即可开始调试,参见下图:
启动调试之后, Dev-C++ 窗口下半部分时会自动显示调试面板(见上图下部),可以用鼠标点击按钮或按快捷键执行调试操作。
这时,可以用鼠标点击按钮或按快捷键执行调试操作。
其中 “下一行”按钮(F7)和“单步进入”按钮(F8)。在简单的只含有一个 main 函数的程序中,这两个按钮的功能是相同的,没有区别。而在含有多个自定义函数的程序中,这两个功能有较大的区别:“下一步(F7)”是指把当前语句作为一步执行完毕,而“单步进入(F8)”是指如果当前语句中含有函数调用则追踪进入到函数中去执行。
如果调用函数是标准函数或你认为无误的函数,就用“下一步”执行(以免追踪进入),对于怀疑有问题的函数才用“单步进入”去追踪。如果一不小心进入了标准函数(例如 printf 函数或“cout << endl;”输出),则点击“跳出函数”以返回。
(一个常见问题:有时候在 Dev-C++ 中调试 C++ 程序时,遇到形如“ << endl;”这样的语句就会卡住无法继续。对于这种情况,比如容易的解决方案是:将 endl 用 '\n' 替换,就可以解决这个问题。或者,这时请停止调试,然后点击菜单“工具”下的“编译选项”,在当前选定的编译器配置方案下,在“代码生成/优化”下的“代码优化”标签页中,为“优化级别(-O)”选择一个合理的值,例如“Debug(g)”或“Med”都可以,确定。然后再重新编译和调试。)
具体使用可参见 “Dev C++调试程序方法超详解” https://zhuanlan.zhihu.com/p/487977800
补充1:如何让Dev c++支持c++11
Dev-C++ 默认未开启 C++ 11新特性支持。使用下面两种方法之一即可让devc++支持c++11:
法一、使用菜单“工具→编译选项”命令,在“编辑器”选项卡中单击“编译时加入以下命令”选中,然后在下面输入-std=c++11, 再单击“确定”按钮,参见下图:
法二、使用菜单“工具→编译选项”命令,在“代码生成/优化”选项卡的“代码生成:”子选项卡中,将“语言标准(-std)”选为“ISO C++ 11” , 再单击“确定”按钮,参见下图:
补充2、Dev C++ 的单个源文件和项目编程两种方式介绍
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++: 启动 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++,创建一个新的文件(.cpp)。
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++,创建一个新的项目(如控制台应用程序),我这里项目类型选“Console Application”。
2. 编写源代码文件,可以是多个(如头文件和源文件):
头文件(.h):定义函数声明、类声明等。
// 文件名:calculator.h
#ifndef CALCULATOR_H
#define CALCULATOR_H
int 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++入门与提高学习讲座系列文章 https://blog.csdn.net/cnds123/article/details/109853186
算法基础系列(C++示例)https://blog.csdn.net/cnds123/article/details/120061638