#pragma与#ifndef #endif相同点、区别、缺陷

相同点:都是防止头文件重复包含

区别:

1、#pragma once是微软编译器独有的,不支持跨平台,而后者不存在该问题;

2、原理不一样,#pragma once如果发现头文件被包含就不会打开头文件,而后者每次都要打开头文件去判断头文件宏,所以前者更快;


缺陷:

#pragma once用在两个内容相同,文件名不同的头文件中时,这2个头文件都会包含进来,编译时就会出现重定义的错误;


a.h                                       b.h

#ifndef  AA_H            #ifndef  AA_H

#define AA_H            #define AA_H                

.....                             .....

#endif                         #endif

当2个头文件里的此处的宏名相同时,就会出现只包含一个头文件的问题,比如a.h和b.h,假设头文  件   宏相同,那么a.h包含进去后b.h就不会包含了,然后当你#include  "b.h"时,并且使用b.h中函数或变量时就会报错找不到函数或变量


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen Roson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值