C++学习之头文件

头文件的定义:
头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。 .cpp就是你写的程序文件。
例如我们在使用类时候,需要用到头文件,将类的声明放在头文件里,然后将源代码放在对应的cpp文件里
例如a.h,里面写类声明或者函数的声明。

//a.h
class fun//声明一个类
void happy();//声明一个函数
extern int k;//声明一个整型变量 这里如果不加extern 那这就是一个定义了即定义了一个整型变量

a.cpp里面写具体我类的定义啊,函数的定义即函数具体里面有什么。

class fun
{
public:
private:
};
void happy()
{
cout<<hello<<endl;
}

这样一个头文件包含其源代码就完成了。这样做的目的是 我们在主函数里可以直接调用happy函数或者直接使用fun这个类,前提是我们在前面加上#include"a.h".

这里提一点,我们自己写的头文件在预处理的时候需要加双引号,而如果我们预处理c语言库里的头文件时候需要加的是< >

那么为什么会这样呢?
原因是#include(预处理)会将程序员使用的所有头文件里的东西放在一个文件里之后再去编译。
在这里插入图片描述
在这里插入图片描述
我们学过c的都知道如果在一个函数里重复定义了一个变量,那么编译器会报错,头文件也是如此,如果我们在cpp文件里重复预处理一个头文件,也会报错的,解决这个问题的方法就是在头文件里加一条命令
这里说明一点,计算机在编译 和 汇编时候 每个文件是独立完成相应操作的,也就是说即使重复定义了,计算机也不会发现,但是在之后将各个文件的汇编文件链接起来的时候,连接器就会发现有重复的东西,就报错了。

#ifndef A_H_INCLUDED
#define A_H_INCLUDED
class fun
void happy();
extern int k;
#endif // A_H_INCLUDED

这个#ifndef<标识>是判断这个头文件是否已经被预处理了,如果没有则执行下列语句,直到#endif,跟if else类似,这样就可以起到防止重复预处理的作用。

那么使用头文件的意义是什么呢?
一个重要的意义是,我们在把一个类的相关函数以及定义加工好了之后,在其他文件里可以直接引用,大大减少了代码量,提高了时间利用率,而且,在修改的时候,只需要修改头文件及其源代码里的代码就行了。

发布了37 篇原创文章 · 获赞 3 · 访问量 2395

猜你喜欢

转载自blog.csdn.net/Stillboring/article/details/104376521