CPP-基础:C++中为什么需要一个头文件,一个cpp文件
把文件分成头文件和源文件完全是为了方便扩展和组织程序 这么说吧 我们可能会自定义很多函数 而这些函数分别会在不同的地方被调用 甚至有些时候我们需要把一堆函数打包起来一起调用 比如#include "stdio.h" 的意思就是告诉系统 我要用输入输出函数包(stdio.h打包了各种各样的输入输出函数). 说说具体的吧 为了方便函数可以独立的被任何地方调用 我们会把每一个函数的定义代码都写成一个cpp 这个叫做函数的代码文件 并且此cpp的文件名以此函数名来命名 同时 我们会建立一个文件名相同的头文件(即.h)并在该头文件里写上此函数的函数声明(如 void a();等等) 别看头文件里只写了简单的一句 但却很有用 如果某个函数里需要调用我们刚才定义的那个函数的时候之需要在代码里加上一句#include "xxxx.h"就可以了(xxxx就是刚才我们自己建立的那个头文件) 这样说好像还是体现不出这种发的优势 那么看看头文件的另一种用法 假如我们现在要开发一个视频编辑软件 那么里面必然要定义很多很多函数 有关于图像处理的 关于音频处理的 等等等等 在没有头文件的情况下 如果我们的main()函数里需要调用关于图像处理的很多函数 那么我们就得在调用语句的前面一个一个的对所用到的函数进行声明(否则系统就会报错 说你的函数没有定义) 而用了头文件就方便多了 我们只需要建立一个tuxiang.h 并在里面写上所有的关于图像处理的函数的声明(相当于我们建立了一个图像函数包) 这样 当任何一个函数想要调用关于图像处理的函数时 无需任何声明 只需在代码前加上一句#include "tuxiang.h"就可以了 这样就避免了每一个cpp里调用图像函数包都得写一大堆声明
CPP-基础:C++中为什么需要一个头文件,一个cpp文件的更多相关文章
- C语言中头文件和cpp文件解析
务必提前预读这里的内容:http://www.cnblogs.com/stemon/p/3999844.html 回到cpp文件与头文件各写什么内容的话题上: 理论上来说cpp文件与头文件里的内容,只 ...
- Keil MDK中单个c文件生成LIB文件
看大多数说的都是简单地将整个工程转换成.LIB,在Project->Options for Target->Output下,选择Create Library,就可以了. 不过这样生成的li ...
- CPP基础
CPP基础1. 如果没有指明访问限定符(public,private),class中默认的private,而struct中的成员默认是public的. #include <iostream> ...
- C中头文件在cpp文件中引用和.h文件引用
1.编译器会单独编译每个cpp文件.头文件会复制到cpp文件中. 2.有时会遇到这样的一个问题a.cpp要调用b.cpp中的函数,而b.cpp又要调用a.cpp中的函数.这就牵扯到相互调用.这时如果我 ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- c++ *.h和*.cpp在编译中的作用
首先,我们可以将所有东西都放在一个.cpp文件内.然后编译器就将这个.cpp编译成.obj,obj是什么东西?就是编译单元了. 一个程序,可以由一个编译单元组成,也可以有多个编译单元组成. 如果你不想 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- Teradata基础教程中的数据库试验环境脚本
Teradata基础教程中的数据库表: Customer: 客户信息表 Location: 位置信息表 Employee: 雇员信息表 Job: 工作信息表 Department: 部门表 ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
随机推荐
- visualstudio Team Foundation Server 使用教程
一.前沿 Team Foundation Server 是我们开发者使用最多的源代码管理工具.由于自己服务器搭建拉取工作慢的缘故,我使用了微软的 TFS.使用非常方便.快捷.免费.且不公开私有的项目. ...
- lightoj 1099【dijkstra/BFS】
题意: 求 1-N 的第二长路,一条路可以重复走 if two or more shortest paths exist, the second-shortest path is the one wh ...
- Unity2d 骨骼动画1:介绍
http://bbs.9ria.com/thread-401613-1-1.html by Orlando Pereira and PedroPereira3 days ago2 Comments 在 ...
- 洛谷P3338 [ZJOI2014]力(FFT)
传送门 题目要求$$E_i=\frac{F_i}{q_i}=\sum_{j=1}^{i-1}\frac{q_j}{(i-j)^2}-\sum_{j=i+1}^n\frac{q_j}{(j-i)^2}$ ...
- 商务系统的构造思路(无源码!)+如何用jsp实现点击单选框内容显示在另一个jsp页面
敲码经验总结: 之前犯了一个错误就是,没有从底层开始学起,有啥问题,就直接博客园找源码,去CSDN找源代码,看到代码就复制粘贴,结果从新梳理知识点的时候,貌似除了复制粘贴,印象深刻的知识啥也没学到. ...
- jave 计算音视频时长
File source = new File("视频.mp4"); Encoder encoder = new Encoder(); try { MultimediaInfo in ...
- traceback异常打印
traceback模块 traceback模块被用来跟踪异常返回信息. 如下例所示: import traceback try: raise SyntaxError, "traceback ...
- [软件工程基础]2017.10.30 第三次 Scrum 会议
决议 游心与李煦通沟通生成报告脚本问题,并调试相应代码 李煦通部署服务器,并做一定安全检查 石奇川设计实验流程和题库前端页面 王嘉睿爵测试网站基本流程,提出关于用户体验方面的建议 刘子渊阅读代码,为机 ...
- bzoj2740 串 && bzoj2176 strange string(最小表示法模板)
https://konnyakuxzy.github.io/BZPRO/JudgeOnline/2740.html 题解讲的很清楚了 (好像等于的情况应该归入case2而不是case1?并不确定) 具 ...
- 从navicat for mysql导出数据库语句时应该加上的两条语句
为了不引起编码问题,一般在从navict for mysql导出一个数据库时在文件最前面添加这2句语句: CREATE DATABASE IF NOT EXISTS `` default charac ...