#ifndef/#define/#endif:防止头文件重复引用

在参考别人的代码时,看到这个:

#ifndef _PLOT_H
#define _PLOT_H

第一眼看到“#ifndef”,我还以为是单词打错了。(捂脸)

(代码的最后一行是“#endif”。)

这三个代码表示:防止该头文件重复引用。

比如这里的意思就是说:

#ifndef _PLOT_H:(if not define _PLOT_H)如果不存在_PLOT_H,

#define _PLOT_H:就引入_PLOT_H,

#endif:否则不需要引入

这就避免了_PLOT_H的重复引用。

这就出现了两个问题,什么是重复引用,以及为什么要避免头文件的重复引用?

顾名思义,重复引用就是多次引用一个头文件,也就是说一个头文件在一个cpp文件中多次被include。这是由于include嵌套造成的。比方说,A_H中include了C_H,而B_H中同时include了A_H和C_H,这就造成了C_H的重复引用。

至于为什么要避免头文件的重复使用,其实很容易想到,一看到重复这种词,为了避免重复,肯定是为了提高代码的效率。换种说法,如果代码中重复引用一个头文件,那代码的效率肯定比只引用一次的低。有些头文件的重复引用只是增加了编译工作的工作量,不会引起太大的问题,只是编译效率低一些,但是对于大工程而言,编译效率低下就是一个很痛苦的问题了。而有些头文件重复包含,可能会引起错误,比如在头文件中定义了全局变量,这种会引起重复定义。

那写程序时,是不是所有的头文件都要加#ifndef/#define/#endif?

当然也不是一定要加,但是加上#ifndef/#define/#endif或者用其他方式避免重复引用只有好处没有坏处,培养一个良好的编程习惯也是很重要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值