C++的程序的文件结构.doc
19页C++程序的文件结构因项目需要,需要对C++的程序的文件结构有所掌握:因此在网上找了下面的文章供学习和参考希望对刚入门的C++朋友能提供一些帮助转载: 程序是由什么组成的? 学习到今天,我们至少有两个答案: 第1,程序由代码语句组成正是一行行的代码,组成了一个完整的程序 第2,程序由函数组成一个个函数之间的互相调用,最终构建出一个完整的程序今天我们又有一个新的回答:“程序由文件组成”程序为什么需要使用多个文件?一个小的程序,可以只写一个源文件,但程序稍微一大,就需要将其中不同的逻辑实现放到不同的源文件.对于需要多人一起开发的软件,自然更需要多个源文件 14.1 源文件和头文件 和别的一些语言不同,C,C++的代码文件有“头文件”和“代码文件”之分二者合起来我们称为单元(Unit)文件 扩展名为 .c 或 .cpp 的文件,主要用以实现程序的各种功能,我们称为代码文件扩展名为 .h 的文件,称为头文件在头文件里主要写一些函数、数据(包括数据类型的定义)、等的声明,这样可以在多个.c或.cpp文件内共享这些函数、数据第12章我们提过到头文件的功能说它可以起到函数“名片夹”的作用 大都数时候,源文件和头文件是对应出现的,比如有一个 A.cpp 的源文件,就会有一个 A.h 的头文件。
这种情况在我们写应用程序时,更是常见所以C++ Builder对此进行了强化比如,它支持在同名源文件和头文件之间通过热键来回切换在CB6.0里,编辑器打开对应的源文件和头文件时,将显示为同一页下的两个子页我们来实际动手看看源文件与头文件在CB里的对应关系 运行 C++ Builder 6或5这一次我们需要一个空白的Windows工程很有可能,在你打开CB时,它就自动为你打开了一个工程为了不出错,我们还是亲自建一个CB6请使用主菜单:File | New | Application;而CB5则使用:File | New Application 新建一个Windows 空白工程 如果在这过程中CB出现是否存盘的询问,请回答不存盘 找到“代码窗口”如果你看到的是一个叫"Form1"的表单,请按F12,“代码窗口”将跑到前面它的标题应该是默认的"Unit1.cpp"正是当前代码文件的文件名如下图: 对于CB6,还可以看到在该窗口的底部有这样一个分页: 源文件:Unit1.cpp 和头文件:Unit1.h 并列着,我们可以方便地选择至于 "Diagram",称为“图解”这是一个给这个源文件加配套注解,及表单上各控件的依赖关系的地方。
如果是一个开发小组在进行共同开发,严格地要求每个成员为每个单元文件写上“Diagram”,可以更好地实现程序员之间的沟通CB5没有这些,不过下面的热键操作两个版本均一样的,要求大家记住按 Ctrl + F6 可以在源文件和头文件之间来回切换请大家试试这个简单的操作将在我们今后的编程过程中高频率地使用 14.2 如何创建多个单元文件 前面我们在“Windows应用程序工程”中看到了头文件与源文件的匹配关系,在“控制台”的工程中,也同样存在不过由于控制台经常只用来写一些小小的程序,所以往往只需一个源文件即可由于只有一个源文件,所以也就不存在函数、数据在多个文件之间“共享”的需要,因此边头文件也就可以不提供 那么,是不是只有在程序很大,或者只有在有很多人同时开发一个软件时,才需要多个源文件呢?这就好像你家里只有两本书:《红楼梦》和《格林童话》,是把它们放在同一个抽屉里呢?还是分开放到两个抽屉里?我觉得后者是比较好的选择因为我们常常希望家里看《格林童话》的人,最好不要去看《红楼梦》程序也一样,最好把不同的逻辑实现,放到不同的源文件中 下面我们做一个实例例子的代码我们都已经学过目标是实现一个可以求统计值和平均值的程序。
根据我们现在所学的情况,我把这个工程中的代码分为三个源代码:其一:主程序就是main()函数所在的代码这个源文件实现总的流程我将该文件取为 main.cpp其二:计算总和及计算平均值的代码这个源文件负责用户计算过程,也包括每个过程所需输入输出该文件将被存盘为mainfunc.cpp 意为主要功能其三: assifunc.cpp表示辅助功能函数所在代码它只提供一个函数:将用户输入的大写或小写的字母'Y'或'N' 确保转换为大写这个函数将main()主函数内,判断用户是否继续时用到 新CB新建一个控制台程序(如果你还开着上个程序,先选File | Close All关闭它)CB会自动生成第一个文件,不过现在的名字为“Unit1.cpp"接下来是一项新工作,我们来添加两人新的单元文件,即上面说的“其二”和“其三”CB6 :File | New | Unit;CB5:File | New Unit请进行两次以上操作,CB将为我们生成新的两个单元文件:Unit2.cpp和Unit3.cpp大家可以再试试 Ctrl + F6注意,第一个单元文件:Unit1.cpp 没有配套的.h文件,所以不要在该文件里尝试Ctrl + F6)。
然后选择File | Save All全部存盘,最好不要存在CB默认的目录下记得按以下关系重命名:Unit1.cpp 存盘为 main.cpp;Unit2.cpp 存盘为 mainfunc.cpp;Unit3.cpp 存盘为 assifunc.cpp;至于总的工程,随你便,我图方便,还是叫:Project1.bpr (现在我们第一次在一个工程中用到多个源文件所以你得学会如何快速打开一个工程中某个源文件——当然,现在这三个文件都已经打开着,不过假设你有点事关闭CB,我们不希望下回打开这个工程时,你“找”不到第2和第3个文件了——请点击CB工具栏上的这个图标:,将出现源文件列表对话框,如左图) 接下来讲在这三个文件中,我们分别写些什么?大多数代码我们都已经在前面学过,所以我对代码的功能不作太多的解释我们的重点是:三个源文件之间的代码如何实现“沟通” 第一个文件:main.cpp 用来实现程序的主流程在 main.cpp 中的main()函数内,我们加入代码 #include
但现在我们一个也没有定义和往常把所有的函数定义在同一个代码文件中不同,今天我们需要把它们分开到不同的代码文件 第二个文件:mainfunc.cpp 存放和计算有关的两个过程(函数)先看:CalcTotal()和CalcAverage()这两个函数我们将在mainfunc.cpp文件内定义你可能又忘了“定义”这个术语?呵,就是“实现”,更白点,就是在mainfunc.cpp文件内“写”这两个函数 下面是mainfunc.cpp的内容在我们输入以下代码时,mainfunc.cpp已经有了一些必要的内容,下面的代码,除了“#include ..”一行在文件最首外,其它均在原有内容之后添加 #include
" << endl; } } //--------------------------------------------------------------------------- 第三个文件:assifunc.c。





