头文件卫士的作用

1.两个文件:a.h, main.cpp. main.cpp中#include "a.h":
此方法最好不用,因为最好不要在头文件里定义变量:
(1)[a.h]:
int b;//只有一行,定义int变量
(2) [main.cpp]:
#include "a.h" //可以,但如果有其他.cpp文件引用a.h则重定义(多个.cpp中)出错.

main(){ ...}
----------------------------------------------------
2.在上面的基础上,在[main.cpp]中多加一个 #include "a.h",则重定义(一个.cpp中):
[main.cpp]:
#include "a.h" 
#include "a.h" //第二个,错误,变量b重定义
main(){ ...}
-------------------
头文件的卫士的目的正在于此,可防止一个.cpp(不是多个.cpp)中重定义.
所以可在a.h中加#ifndef #define #endif:
(1)[a.h]:
#ifndef HEADER_A
#define HEADER_A

int b; //定义int变量,不过最好不要这样,尽量不要在头文件里定义变量

#endif
----------------------------------------------------
3.以上都只有一个.cpp引用了a.h,如果还有其他.cpp引用a.h,则变量b重定义,出错.故可把b设为全局变量(用extern ),即只声明b,以便多个.cpp都可访问,然后在某一个.cpp中定义一下:
(1)[a.h]:
#ifndef HEADER_A
#define HEADER_A

extern int b; //声明int变量
#endif

(2) [a.cpp]:
#include "a.h" 

(3) [main.cpp]:
#include "a.h" 
#include "a.h" //可以,因为有头文件卫士

int b= 3;//要定义一下b,也可在a.cpp里定义,但只能在二个.cpp中选一个.cpp,并定义b
main(){ ...}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值