精华内容
下载资源
问答
  • 多文件编程有什么好处多文件编程是必要的,甚至是必须的。简单来说就是把功能相近或者相关的函数变量定义添加到.c和.h文件中,这样的两个文件称为一个模块。其好处至少可以说出以下几点: 1、方便代码复用: 模块化...

      多文件编程是必要的,甚至是必须的。简单来说就是把功能相近或者相关的函数变量定义添加到.c和.h文件中,这样的两个文件称为一个模块。

    其好处至少可以说出以下几点:

    1、方便代码复用: 模块化的代码可以很方便的迁移到其他项目中去,改写模块比重写模块更快;

    2、方便分工合作: 各个功能模块分成多个文件同时编辑,可以有效的提高团队开发的分工协作效率;

    3、方便后续维护: 项目源码交接时,不管是客户还是同事,对于划分明确的文件是不会排斥的;

    4、保证了库支持: 个人函数库都是由c文件产生库,采用“库文件+h文件”的形式,可以实现快速编译和保护源码的效果。

    或答:

      1、分模块的编程思想
      2、功能责任划分清楚
      3、方便调试
      4、主程序简洁

    展开全文
  • linux--c++多文件编程

    2017-04-28 10:34:13
    对于面向对象而言,万物皆为对象,对于我们而言对象其实就是一个类,通常呢,我们设计一个类都会有两个文件,×××....好了,多文件编程好处这么,那么下面我简单的介绍一个实例 有一个职员类:employee.h employ

    对于面向对象而言,万物皆为对象,对于我们而言对象其实就是一个类,通常呢,我们设计一个类都会有两个文件,×××.cpp和×××.h

    把每个类型不同的类放在不同的文件中便于修改,便于查看,更具扩展力和直观力,像继承和接口都是不同文件下的类互相产生关系,

    每个类文件还可以直接给别人使用。

    好了,多文件编程好处这么多,那么下面我简单的介绍一个实例

    有一个职员类:employee.h employee.cpp

    有编号,姓名,工资

    有一个经理类继承职员类:manager.h manager.cpp

    数据我就部设计了,我主要是介绍实现方法

    有一个测试文件main.cpp

    一共5个文件


    employee.h

    #include "iostream"
    #include "string"
    using namespace std;
    class employee
    {
    
    	private:	
    	char id;
    	string name;
    	float	gonzi;
    	public:
    		employee(){}
    		~employee(){}
    		void set_id(int _id);
    		int get_id();
    		void set_name(string _name);
    		string get_name();
    		void set_gonzi(float _gonzi);
    		float get_gonzi();
    
    };
    empolyee.cpp

    		#include "employee.h"
    		
    		void employee::set_id(int _id)
    		{
    			id=_id;
    		}
    		int employee::get_id()
    		{
    			return id;
    		}
    		void employee::set_name(string _name)
    		{
    			name=_name;
    		}
    		string employee::get_name()
    		{
    			return name;
    		}
    		void employee::set_gonzi(float _gonzi)
    		{
    			gonzi=_gonzi;
    		}
    		float employee::get_gonzi()
    		{
    			return gonzi;
    		}
    	

    manager.h
    #include "employee.h"
    class manager:public employee
    {
    public:
    	manager();
    	~manager();
    	
    };
    

    manager.cpp

    #include "manager.h"
    
    manager::manager()
    {
    
    }
    manager::~manager()
    {
    	
    }

    main.cpp

    #include "iostream"
    #include "manager.h"
    using namespace std;
    
    int main()
    {
    	manager m1;
    	m1.set_id(2);
    	cout<<m1.get_id()<<endl;
    	//cout<<"heelo,my_main()"<<endl;
    	return 1;
    }
    以上只有2个类,但是有5个文件,那么我们怎么编译呢?

    g++ main.cpp manager.cpp employee.cpp


    到此每个文件(类)就可以单独开发了

    展开全文
  • 我终于把C++多文件编程理解透彻了

    千次阅读 多人点赞 2020-04-06 22:05:02
    稍微大一点的项目都不会是单个文件的,多文件好处实在太,模块开发、分工协作、代码复用、结构清晰、模块更新…不细扯,直接梳理一下C++源代码的文件类型、多文件编译。 1、文件类型 C++程序一般分三类文件: ...


    稍微大一点的项目都不会是单个文件的,多文件的好处实在太多,模块开发、分工协作、代码复用、结构清晰、模块更新…不细扯,直接梳理一下C++源代码的文件类型、多文件编译。

    1、文件类型

    C++程序一般分三类文件:

    • 头文件( .h )。放置各种声明,用于被cpp文件包含。
    • 模块文件(.cpp)。放置一些函数定义,也称为功能模块。
    • 主程序文件(.cpp)。包含main()的文件,程序入口,调用模块文件实现的方法。

    1.1、头文件

    头文件的存在是为了联系多个源文件,是源文件之间的接口。C++与C一样,要求先声明后使用,可是编译的时候是单文件编译的。看一个没有头文件的例子。

    //main.cpp
    void fun();     //必须先声明,不然调用出错
    int main(){
        fun();       // 调用fun
    }
    
    //fun.cpp
    #include <iostream>
    void fun(){
        std::cout<<"This is fun."<<std::endl;
    }
    

    使用命令g++ main.cpp fun.cpp编译两个文件之后是可以正常运行的。这里你需要知道一点C++编译过程原理:C++把每个文件单独编译出来,再通过链接把编译出来的多个文件组成一个可执行程序。编译的时候只检查函数声明,只要该文件能在之前声明过函数就能编译成功。函数定义是在链接阶段检查的,而链接是多文件共同参与的。上例中,main.cpp必须先声明函数fun()才能通过编译, 尽管没有在main.cpp中定义,但在链接的时候发现fun.cpp定义了该函数,程序正确。

    但是,每次使用其它文件的函数前都要自己先声明显然很繁琐也容易出错。所以,我们把声明类语句放到一类文件里,称之“头文件”,如果你需要使用到某个函数,就把它所在的头文件包含进来,头文件的内容会在编译前被粘贴到源文件中,这样在编译的时候就能正常通过了。看使用了头文件之后的例子。

    //main.cpp
    #include "header.h"
    int main(){
        fun();
    }
    
    //header.h
    #ifndef HEADER_H
    #define HEADER_H
    void fun();
    #endif
    
    //fun.cpp
    #include <iostream>
    void fun(){
        std::cout<<"This is fun."<<std::endl;
    }
    

    头文件的内容一般都会使用条件编译预处理语句(如上)包住,防止因为依赖关系多次被包含。

    既然知道头文件的作用,那哪些东西应该放在头文件?哪些不能放在头文件?很好理解,如果这部分需要复制给每个相关的cpp,就把它放在头文件,如果被多个cpp复制之后,可能导致它们在链接过程出错,就不要放在头文件。 一 一来看:

    • 函数声明:显然应该放在头文件中,前面很清楚。
    • 类定义、结构定义:用函数定义的逻辑想,似乎不能放在头文件中。但它应该放在头文件。第一,每个cpp文件应该有一个定义,在编译的时候编译器才知道怎么为对象分配空间。其次,类型定义不会在内存上分配空间。
    • 模板函数:编译器必须在编译的时候根据函数模板实例化对应的函数,所以应该放在头文件。
    • 内联函数:编译期间被插到调用位置,所以也要放在头文件。
    • 函数定义不要!C++规定一个程序同签名的函数只能有一个定义。如果你把函数定义放在头文件件,并且同一个程序的多个cpp文件包含了该头文件,这样,在链接的时候会发现多个定义版本,链接报错。
    • 变量定义不要!与上面类似,被多个文件包含的时候会出现多次定义同一个变量,链接错误。但是,static变量和extern变量可以,以及宏定义的常量,因为这些在多个文件出现并不会出错。

    1.2、cpp源文件

    把头文件的东西抽离出去之后,剩下的就可以放在cpp文件了。在cpp文件上,除了需要include对应的头文件之外,没有什么变化。

    尽管都是cpp文件,还是有必要理解成模块文件和主程序文件,二者类似功能的提供者和使用者,在实际中,也常常由不同的人开发。

    2、多文件的编译

    如果是使用Windows下的集成开发环境的,大可直接Build,一键搞定,但你对这个过程的理解就可能差点。所以我以linux上为例,最简单的多文件编译命令:

    g++ main.cpp fun.cpp -o out   #列举所有要编译的文件
    

    也可以单独编译成 .o文件之后再链接:

    g++ -c main.cpp -o main.o
    g++ -c fun.cpp -o fun.o
    g++ main.o fun.o -o out
    

    第二种是不是引起了你的疑惑——这么麻烦?可是,这种方式提供了一个优点——模块编译更新。你只需要编译你修改过的文件,再跟其他的链接,无需再次对整个项目编译。

    在实际的项目中,项目文件可不是小数目,无论上面的那种方式,你都需要一一列出文件,不实际。IDE工具自然没有这种烦恼。不过Linux也会使用Makefile进行项目管理,实现自动编译。行了,又多了一样要学。

    展开全文
  • 模块化编程 好处 隐藏源文件用的时候只需要包含.h文件 团队的分工协作 ...多文件开发注意事项 1.头文件可以和C程序一样引用其它文件,可以写到预处理块,但不要写具体语句 2、可以声明函数

    模块化编程

    好处

    隐藏源文件用的时候只需要包含.h文件

    团队的分工协作

    可以把功能分为若干个模块


    实现

    .h文件 声明文件(可以把C所有的声音函数的方法写到这个里面)

    声明函数

    声明变量

    声明结构体

    .c文件 源文件



    多文件开发注意事项

    1.头文件可以和C程序一样引用其它文件,可以写到预处理块,但不要写具体语句

    2、可以声明函数,不可以定义函数

    3、可以声明变量、不可以定义变量

    4、可以定义一个宏函数。宏函数很像函数,但只有声明,不是一个真正的函数

    5、结构的定义、自定义数据类型一般放在头文件中

    6、多文件编程只能有一个main函数入口,因为一个工程只能有一个入口函数,把包含main函数的文件称为主文件夹

    7、 一般一个.h文件对应一个.c文件,并且文件名称要相同

    8、头文件要遵循幂等原则,可以包含多个 同的头文件,但只有一个生效

    9、防止重复包含的措施

    展开全文
  • [Linux系统编程]文件IO(一)

    千次阅读 多人点赞 2021-04-08 19:48:47
    距离上一次利用高并发技术实现360度行车记录仪功能已经过去半年了。开始写一系列关于系统编程和网络编程内容进行总结。
  • C#线程编程

    千次阅读 2011-12-07 09:52:08
    在.NET线程编程这个系列我们讲一起来探讨线程编程的各个方面。首先我将在本篇文章的开始向大家介绍线程的有关概念以及线程编程的基础知识;在接下来的文章中,我将逐一讲述。NET平台上线程编程的知识,诸如...
  • 谈到为什么需要线程编程,可能需要从并发这个概念的历史来说起。 在很久以前,计算机并没有操作系统,同一个时刻他们只能执行一个单独的程序,而且这些程序直接访问所有的计算机资源。在计算机刚面世的那个年代,...
  • 比如下载文件,你要一边下载一边显示进度一边保存,在这种情况下,如果没有用线程的话,没有意外的话一般都会把主线程阻塞,比如进度条的进度根本没有随着已下载的量而变化,堪至是整个窗体都动不了,用线程就...
  • c 线程编程01

    千次阅读 2018-10-21 00:53:57
    Java 老师希望我们尝试进行 Java 的线程编程,也希望我们能够去实现一下 C 语言的线程编程。用以体会不同编程语言间的线程编程。借此机会,初步学习一下 C 语言的线程编程。 第一部分主要内容如下: ...
  • 资源文件在Delphi编程中的应用

    千次阅读 2012-09-06 16:48:32
    段东宁 计亚南 (郴州职业技术学院, 湖南 ...本文详细介绍了在Delphi编程中资源文件的创建方法和使用技巧。 关键词:Delphi,资源文件,TResourceStream对象,MCISend String 函数 The Application of Resource F
  • 路复用 函数说明  我们都知道fcntl()函数解决了文件共享的问题,如果不知道请看:http://blog.csdn.net/mybelief321/article/details/8993138。接下来该处理I/O复用的情况了... 在经典的《Unix网络编程第1卷》Cha
  • 比如下载文件,你要一边下载一边显示进度一边保存,在这种情况下,如果没有用线程的话,没有意外的话一般都会把主线程阻塞,比如进度条的进度根本没有随着已下载的量而变化,堪至是整个窗体都动不了,用线程就...
  • Go进程编程

    千次阅读 2017-05-31 11:00:20
    进程编程内核会把虚拟内存划分为若干页,而物理内存的划分则是由CPU负责的,一个物理内存单元称为一个页框 没有页框对应的页可能是没有数据或者是数据暂时还不需要使用,也可能是数据已经被换出磁盘(就是Linux的...
  • 《unix环境编程》解释器文件

    千次阅读 2012-09-10 14:54:13
    解释器确实使用户得到效率方面的好处,其代价是内核的额外开销,因为识别解释器文件的是内核。 解释器文件的必要性: 1. 有些程序是用脚本编写的,解释器文件可以将这一事实隐藏起来,也就是说解释器文件本身是个...
  • Java 网络编程

    万次阅读 多人点赞 2019-05-30 23:07:18
    首先理清一个概念:网络编程不等于网站编程,网络编程即使用套接字来达到进程间通信,现在一般称为TCP/IP编程。 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的...
  • 混合编程是啥呢? 混合编程是指使用两种或两种以上的程序设计语言来开发应用程序的过程。目前,计算机上流行的程序设计语言有多种,它们有各自的优势和不足,混合编程可以充分利用各种程序设计语言的优势。混合编程的...
  • Swing线程编程

    万次阅读 2007-01-30 23:02:00
    Swing线程编程关键字:Swing,线程,GUI,SwingWorker摘要:本文论述了怎样开发线程的Swing程序,从而提高Swing程序的响应速度和性能。 近期,我将推出一系列研究Swing程序的文章,这也算是为了向Swi
  • unix环境高级编程-4.14-文件系统

    千次阅读 2011-10-22 16:44:17
    为了说明文件连接的概念,先要介绍UNIX文件系统的基本结构,同时,了解i节点和志向i将诶点的目录项之间的区别也是很有益处的。 目前正在使用的UNIX文件系统有多种实现。例如,SOLARIS支持多种不同类型的磁盘文件...
  • 【转帖】文件系统驱动编程基础篇

    千次阅读 2009-08-26 09:07:00
    文件系统驱动编程基础篇之一——我们的准备一、导言在四个月漫长的征战后,终于在国庆节的今天完成了基础篇系列。本文写作的初衷很简单,就是给平静的池水中加入一点波澜,如果大家在阅读后感受到一点生气,激起探索...
  • Java并发编程---线程的好处

    千次阅读 2015-06-06 12:09:43
    尽管并发编程有些挑战,但是可以带来以下好处: 提高资源利用率某些情况下简化程序设计程序拥有更好的响应 提高资源利用率 假设一个程序的执行逻辑是:花5s从磁盘读取一个文件,2s处理读取的数据,程序...
  • NET线程编程(1):任务和线程

    千次阅读 2006-05-29 11:13:00
    在.NET线程编程这个系列我们讲一起来探讨线程编程的各个方面。首先我将在本篇文章的开始向大家介绍线程的有关概念以及线程编程的基础知识;在接下来的文章中,我将逐一讲述。NET平台上线程编程的知识,诸如...
  • 摘要:这是翻译自一个大概30个小节的关于Java并发编程的入门级教程,原作者Jakob Jenkov,译者Zhenning Lang,转载请注明出处,thanks and have a good time here~~~(希望自己不要留坑)
  • 线程编程10个例子

    万次阅读 2012-07-11 14:50:04
    十个例子清晰列举啦线程编程的奥妙。  VC中线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好. 一、问题的提出 编写一个耗时的单线程程序:  新建一个基于对话框的应用程序SingleThread,在主...
  • .NET线程编程(1):任务和线程 在.NET线程编程这个系列我们讲一起来探讨线程编程的各个方面。首先我将在本篇文章的开始向大家介绍线程的有关概念以及线程编程的基础知识;在接下来的文章中,我将逐一...
  • 我们知道在C语言中许多文件操作的函数 很零散,在使用的时候不得不四处查找 ,我们是否能向C++中 的 CFile类等一样封装我们自己的文件操作呢?当然可以,我们这里我封装的是 C语言的文件操作函数 。实际上我们可以...
  • Pthreads线程编程(1)

    千次阅读 2014-08-04 20:28:36
    在VS2010中配置Pthreads-win32 http://web.cs.du.edu/~sturtevant/pthread.html 本系列的学习笔记是参考的... 一 引言 在支持共享内存的多核架构中,线程(thread)可用来实现并行编程。从历史的角度来看pthrea
  • 编程习惯(一)头文件与cpp文件为什么要分开写

    千次阅读 多人点赞 2014-01-03 21:59:37
    编程习惯(一)头文件与cpp文件为什么要分开写
  • 接口编程好处

    万次阅读 2011-01-21 08:22:00
    接口编程好处在项目中的意义:  在传统的项目开发过程中,由于客户的需求经常变化,如果不采用面向接口编程,那么我们必须不停改写现有的业务代码。改写代码可能产生新的BUG,而且改写代码还会影响到调用该...
  • 文章目录1、简介2、用法介绍3、实时代码文件格式的好处 1、简介 在MATLAB中,实时脚本 Live Script是由MATLAB 实时编辑器提供的以一种全新方式创建、编辑和运行 MATLAB 代码。 Live Script是一个包含代码、输出结果和...
  • linux编程细节1-内核-文件目录

    千次阅读 2014-06-18 19:57:21
    1,/proc文件是什么? /proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取有关进程的有用信息。与其他文件系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 229,483
精华内容 91,793
关键字:

多文件编程的好处