头文件就是各个函数申明存放地(也可以放结构体)
现在你有main.c文件、A.c、B.c文件
A.c包含A()函数
B.c包含B()函数
如果想要在main.c中使用A()B()两个函数,那么我们必须在int main()之上进行申明
_________________________________________________________________________
//main.cpp
#include <iostream>
void A();
void B();
int main()
{
A();
B();
}
-----------------------------------------------------------------------------------------------------------------------
我们将申明,也就是
void A();
void B();
分别放到A.h和B.h,头文件里h (head),那么代码将变成
_________________________________________________________________________
//main.cpp
#include <iostream>
#include“A.h”
#include“B.h”
int main()
{
A();
B();
}
将申明放在头文件这么做有什么好处?
上面我们只说A.c文件中有A函数,如果其有A1、A2、A3。。。。。A50,有五十多个函数。
恰巧main.c、B.c、C.c三个文件里都需要这50个函数,第一种三个文件里你都需要复制50个申明,占据了150行。
同样情况,将50个函数放在A.h头文件里,将#include “A.h”复制在三个文件中,三个文件里仅仅占据了3行。这让我们的代码更加简洁了。
还有一件事,当A10函数出问题,你优化修改了A10会发生什么?
第一种不加头文件情况下,你必须记得你都将函数复制到哪些文件里,然后依次更改。
第二种加上头文件情况下,你只需改掉A.h中A10函数即可。
A.h应该怎么写?
//A.h
#include <iostream>
#pragma once
void A1(int a1);
void A2(int a2);
void A3(int a3);
//A.h
#include <iostream>
#ifndef _A_H
#define _A_H
void A1(int a1);
void A2(int a2);
void A3(int a3);
#endif
写A.h头文件,就像,将各个函数的申明放在一个文件夹里
那么其他东西是干什么的?首先来看第二种里的
#ifndef _A_H
#define _A_H
void A1(int a1);
void A2(int a2);
void A3(int a3);
#endif
头文件先ifdef _A_H,是否定义了_A_H?
两种情况,第一种已经定义过了,那么执行到此为止。
第二种还未被定义那么#define _A_H,我们对其定义_A_H(类似标志位或者起个名),然后申明A123,最后#endif结束定义。
这就是头文件的书写格式,那么为什么要有这一步呢?
编程就是一个“一行代码完成任务,十行代码防呆防傻子”。
为什么会有第一种情况A_H被定义过了?我们将A.h编写好,main.c文件与B.c文件都引用到了A.h,B.c文件里有B自己的函数,我们将B.h也放在main.c文件中。
那么我们再次看main.c引用的头文件只有A.h、B.h。但是,B.h中也包含A.h,意味着在main.c中我们重复引用了A.h头文件。这对程序来说是没有必要的,所以用此格式屏蔽掉已经重复的部分减少冗余。
我们再来看看第一个代码块
//A.h
#include <iostream>
#pragma once
void A1(int a1);
void A2(int a2);
void A3(int a3);
这个头文件中#pragma等同于上述的三行代码,效果是一样的,大多编译器都可以识别此行代码。不过教材中一般都用三行代码。对于我,那就是怎么简单怎么写喽^-^
标签:include,头文件,函数,int,void,C++,自学,main From: https://blog.csdn.net/weixin_64418869/article/details/140582534