c++中 头文件 .h 和 源文件 .cpp的区别和联系

c++中 头文件 .h 和 源文件 .cpp

1, 二者是什么

头文件 .h 里边写类的声明,包括类里面成员和方法的声明, 函数原型, 全局变量的定义,# define 常数等等,但是一般不会写出具体的实现。
定义头文件时候要在开头和结尾写上预编译语句:
#ifndef CIRLE_H
#define CIRLE_H
// 你的代码内容
#endif
这样的目的是防止重复编译,不然容易出错
源文件 .cpp , 开头要include 头文件,然后在源文件中对 头文件中的成员函数,进行具体实现。

2, 二者的区别和联系

.h 文件叫头文件,它是不能被编译的, #include 叫做预编译指令,相当于将.h文件中的内容添加到了.cpp的头部。
每个.cpp文件会被编译成一个.obj文件,然后将所有的obj文件链接起来形成可指向文件。 .h文件的名称和.cpp文件的名称也没有必要相同,编译器只认 #include语句。

3, 注意事项

同一个项目中c++ 和c对应的头文件要注意区别
虽然预编译指令对 头文件的文件名没有特殊要求,只是将头文件的内容复制到 源文件中,就算是 .txt文件也能够正常使用。所以在只有一种语言的代码中,使用.h文件都一样, 在两种语言都存在的项目中 但是约定 .h文件对应 .c程序, .hpp文件对应.cpp程序,使用两种文件名进行区别。避免两种语言混淆导致报错。

4 项目中定义全局函数、全局变量

c++中,一个函数或者变量 可以在多个位置被声明,但是只能被定义在一处;
如果在.h文件中执行 int A; 这是定义语句,如果其它多个.cpp文件include了这个文件,那么int A被多次定义,就会报错。
要解决这个问题,就要使用extern 关键字来修饰 变量: extern int a;
extern的意义在于说明,这是一个声明,而不是一个定义;

声明,和定义的区别就在于是否为变量开辟内存空间。

extern 是可以省略的,对于函数,需要给出方法的实现,如果不给实现,就只能属于声明,二者可以很好区分,所以可以省略;而对于变量就必须加上,如果不加上,就会认为是定义,而不是声明。

正确操作:
在 test1.hpp 中声明 extern int a;
在 test1.cpp 中定义 int a = 10; (或者使用 int a; 定义, 这样的话值是默认值 0)
在 test2.cpp 中 #include “test1.hpp”, 这样便可以在 test2.cpp 中直接使用 a 变量了.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值