C++自学笔记3(头文件)

头文件就是各个函数申明存放地(也可以放结构体

现在你有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等同于上述的三行代码,效果是一样的,大多编译器都可以识别此行代码。不过教材中一般都用三行代码。对于我,那就是怎么简单怎么写喽^-^

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值