基本的.h和.cpp的问题
一、用法不同
1、.h文件直接#include到需要的.cpp文件里,就相当于把.h文件的代码拷贝到.cpp文件
2、.cpp文件需要先自己生成.o文件,把不同.o文件连接生成可执行文件。
比如有3个cpp文件:a.cpp、b.cpp、c.cpp,其中一个包含main()函数,需要生成test程序,
步骤:
(1)生成3个.o文件:
cc -c a.cpp
cc -c b.cpp
cc -c c.cpp
这样就得到3个.o文件:a.o、b.o、c.o
(2)链接生成test程序:cc -o test a.o b.o c.o
就得到test可执行程序,输入./test就可执行程序了。
二、规范不同
1、h文件一般包含类声明;
2、cpp文件一般为同名h文件定义所声明的类函数。
说明:一般可在cpp文件直接添加main()就可以测试该模块功能。
扩展资料:
放在.h里的数学计算公式:
1、 三角函数
double sin(double);正弦
double cos(double);余弦
double tan(double);正切
2 、反三角函数
double asin (double); 结果介于[-PI/2,PI/2]
double acos (double); 结果介于[0,PI]
double atan (double); 反正切(主值),结果介于[-PI/2,PI/2]
double atan2 (double,double); 反正切(整圆值),结果介于[-PI,PI]
3 、双曲三角函数
double sinh (double);
double cosh (double);
double tanh (double);
4 、指数与对数
double frexp(double value,int *exp);这是一个将value值拆分成小数部分f和(以2为底的)指数部分exp,并返回小数部分f,即f*2^exp。其中f取值在0.5~1.0范围或者0。
double ldexp(double x,int exp);这个函数刚好跟上面那个frexp函数功能相反,它的返回值是x*2^exp
double modf(double value,double *iptr);拆分value值,返回它的小数部分,iptr指向整数部分。
double log (double); 以e为底的对数
double log10 (double);以10为底的对数
double pow(double x,double y);计算x的y次幂
float powf(float x,float y); 功能与pow一致,只是输入与输出皆为单精度浮点数
double exp (double);求取自然数e的幂
double sqrt (double);开平方根
5 、取整
double ceil (double); 取上整,返回不比x小的最小整数
double floor (double); 取下整,返回不比x大的最大整数,即高斯函数[x]
6 、绝对值
double fabs (double);求实型的绝对值
double cabs(struct complex znum);求复数的绝对值
以.h位后缀的是头文件,.cpp是源文件,一般都是在一个项目中。如果是初学c++的话,使用源文件(也就是.cpp)就足够编写出需要的源程序了。如书本上最基本的“Hello World”编码,只要在源文件中有一个主函数就可以完成一个程序。在稍微复杂一点的程序中,也许就会用到头文件(.h)。事实上,这种头文件和代码中预处理里包含的头文件没有什么区别(就好像C语言中#include )其中stdio.h就是一个头文件。编写头文件就是按照自己的需要,给程序设计这样的头文件。头文件中,一般包含一些类的声明,函数定义之类的东西,方便在源文件的主函数中使用。例如在a.h文件中:
#include
using namespace std;
class Try
{
public:void do();}接下来,只要在源文件b.cpp中的预处理命令里写成:
#include
#include "a.h" (也就是在这里加上#include "a.h"这一句)
using namespace std;
.....就可以在b.cpp的代码中声明和调用Try类型的对象了。
扩展资料
c++程序里使用多个cpp和h文件:
建立一个工程,里面有三个文件hello.hpp、hello.cpp、main.cpp
// hello.hpp
#ifndef HELLO_HPP
#define HELLO_HPP
class Hello
{
public:
void show() const;
};
#endif
====================
// hello.cpp
#include "hello.hpp"
#include
using std::cout;
using std::endl;
void Hello::show() const
{
cout << "Hello World" << endl;
}
====================
// main.cpp
#include "hello.hpp"
int main()
{
Hello hello;
hello.show();
return 0;
}
参考资料来源:百度百科 - C++
百度百科 - cpp (一种计算机编程语言)
原因很简单,因为你没有在.h 和 .cpp 文件之间建立联系,你需要在.cpp文件的中加一行:
#include "test.h"
运行结果
3请按任意键继续. . .
extern int x,y//是声明,没有错
如果在主函数中包含 test.cpp 那么这个声明就没意义了。
C++中头文件(.h)和源文件(.cpp)都应该写些什么
头文件(.h)与源文件(.cpp)在C++中的作用与区别 头文件 (.h):声明与原型 头文件 (.h) 主要用于声明类的结构、函数原型以及常量定义。编写头文件时,应遵循一定的规则,如在文件的开头和结尾加入预编译语句,以防止重复编译。例如,通常会将头文件命名为某种形式,如 `ClassName.h`,这不仅便于...
C++编头文件的时候后缀是.cpp和.h有什么区别?
本质上是没有什么区别的,.h文件实现的功能是声明本文件或.cpp文件中需要被别人使用或知道的变量、类型、函数及宏定义等。.h文件就像是一个接口,具体的实现可以在.cpp中也可以在.h中。.cpp中的函数或变量即便是全局的,在没有其他.cpp文件使用的情况下,也可以不写在.h中。一般的数据,数据结构,...
C++中.CPP文件与.h文件有什么不同。详解与举例怎么使用
例如在a.h文件中:include<iostream> usingnamespacestd;classTry { public:voiddo();}接下来,只要在源文件b.cpp中的预处理命令里写成:include<iostream> include"a.h"(也就是在这里加上#include"a.h"这一句)usingnamespacestd;...就可以在b.cpp的代码中声明和调用Try类型的对象了。
C语言中.cpp与.h是如何连接的?
.h 和 .cpp 不是 连接\/链接 关系,而是包含关系。也就是说,在预编译期间,编译器把 .h 的文字内容,原原本本 插入.cpp 文件中,插入位置就在 #include 这句 宏命令处。文字内容 插入完毕,再编译 .cpp 系统的 .h 放在 系统文件夹们 里。系统文件夹路径 定义在环境变量 INCLUDE 里。自定义 ...
.h文件和.cpp文件的区别
。h文件中声明的内容可以被其他文件使用,而它本身并不包含定义。。h文件的作用是为了让程序员在其他文件中使用当前文件中定义的函数、类、变量和常量等,以提高程序的复用性。一般情况下,。h文件中只包含函数和类的声明,而不包含实现。。 cpp文件 。cpp文件是C++程序中...
cpp文件合并的问题
4、假设B.cpp里定义的函数要用到A.cpp的函数,那么B.cpp要包含A.cpp函数声名的那个.h文件。5、举个具体例子吧,一个.h,2个.cpp main.cpp里: 这个文件只包含主函数 include "zidingyi.h"int main(){ int a = 10,b=20;return sum(a,b);} fun.cpp: 这个文件实现各个函数的...
C++多个.h和.cpp文件的连接?
1,文件 .CPP里包含的头文件要正确.改包含的要包含.2,main函数里要包含你编写全部.H头文件.3,如没问题参照以下步骤.举个例子吧:假设你已经编写好了以下3个文件(或者更多):SSList.H --- 头文件 SSList.cpp --- (函数)实现文件 (后缀为.c也可以)SSList_main.cpp --- 主(调用)文件 (后缀...
.h文件和.cpp文件会有一一对应关系么?
多对多的关系.h是头文件.cpp是程序源文件 一个头文件可以被多个程序源文件引用 而一个程序员文件又可以应用多个头文件 哈哈
*.h文件和*.cpp文件到底有什么区别呢
从理论上说.h文件中也可以放实现,不过由于函数可以多次声明,却不可以多次定义,而又因为.h文件往往是被同一个项目中的多个文件包含的,因此如果把实现放在头文件中,那么在同一个程序中就会出现同一个函数的多次定义,从而导致编译,链接的过程不正常。
我是c++初学者,请问怎么将.h和.cpp的文件连接起来?
在CPP文件顶部 如果是系统自带的就是include<文件名.h> 如果是自已编的了就是include"文件名.h"