#pragma once和#ifndef,#define,#endif

#pragma once和#ifndef,#define,#endif都有防止头文件重复包含的作用。

所谓重复包含就是指在源文件中头文件被重复使用了同一个头文件(类似二次定义),造成冗余。

1. 程序员想出了利用#ifndef,#define,#endif防止重复包含

     //a.h
     #ifndef A_H
     #define A_H
     function1();
     function2();
     #endif A_H
     //b.h
     #include"a.h"
     #ifndef B_H
     #define B_H
     function3();
     function4();
     #endif B_H
     //main.app
     #include"a.h"
     #include"b.h"
     int main()
     {
         function1();
         function3();
         return 0;
     }
 上述代码经过预处理(把头文件包含到源程序)后,得到如下语句:
     #ifndef A_H
     #define A_H
     function1();
     function2();
     #endif A_H

     #ifndef A_H
     #define A_H
     function1();
     function2();
     #endif A_H
     #ifndef B_H
     #define B_H
     function3();
     function4();
     #endif B_H

     int main()
     {
         function1();
         function3();
         return 0;
     }
 显然由于第二个的#ifndef A_H的条件不成立,所以就避免了a.h
 头文件的重复包含。

但是这种方法也存在的明显的弊端:
其一,#ifndef的宏名要注意不能再次使用;其二,每次重复都要来判断,显然效率低下

2.随后出现了#pragma once解决了上述问题

     //a.h
     #pragma once
     function1();
     function2();

但#pragma once也非十全十美,一些较老的编译器并不支持。

1
2
3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值