#pragma once是什么意思

以前写的,翻出来看看  
   
  在vc6的时代头文件一般使用ifndef   define   endif  
  在vc7的时代头文件一般成了pragma   once  
  不知道有没有人深究其中的意义  
  为什么有这样的代码,是为了头文件不被重复引用,那样编译器抱错的,这两种方法都是同样的目的,有没有区别呢?  
  还是举例来说明,可能有好几个库,每个库内部可能都有public.h这个文件,如果使用  
  ifndef   public_h  
  define   public_h  
  ...  
  endif  
  那么当一个文件同时引用两个这样的库时,后一个库里的文件就不被编译了,而pragma   once可以保证文件只被编译一次  
  看起来pragma   once比ifndef   define   endif要好,那么ifndef   define   endif  
  的地方都pragma   once好了。今天碰到了又一个例子,比如你有一个zlib.h在几个库都用到,而为了方便,把zlib每个目录下copy了一分,因为这个文件不会作修改,已经很完整了,这个时候如果使用pragma   once,就会重复定义,看来ifndef   define   endif还是又派上用场的地方。  
  所以对于公有或者接口的文件,使用ifndef   define   endif,对于内部的文件使用pragma   once.  

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值