为什么这样能够防止头文件重复调用?

一些资料上说在头文件加上类似下面的语句就能防止头文件重复调用:
    #ifndef   _TEST_H_
    #define   _TEST_H_
    ……                                //头文件内容
    #endif

不是很明白,按照我的理解,如果之前没有定义过“_TEST_H_”,如上的条件编译会让整个头文件失效。另外头文件什么情况下会被重复调用,有什么后果?

 

第一次调用,没定义过_TEST_H_,就会定义_TEST_H_ 然后头文件被调用
如果还有调用,_TEST_H_已被第一次定义,自动就跳过了

 

假设头文件被重复调用,会对系统有什么样的影响?

有两个影响:
1. 在此头文件中的变量或者宏定义会被重复定义(有时导致编译出错)
2. 影响编译预处理速度

如果头文件被重复引用多导致很多宏定义被重复定义#define

比如,有一个头文件为 test.h
其中有一个宏定义  #define  TEST_MACRO   0x1234

如果另一个头文件 test1.h和test2.h都包含了test.h
而test1.h和test2.h又同时在一个.c文件中使用,那么就会有重复调用的情况,就会对test.h文件进行多次展开,影响预处理的效率(多预处理了一次test.h)

 

点击打开链接 http://www.cnblogs.com/rollenholt/archive/2012/03/20/2409046.html (详细的介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值