几何尺寸与公差论坛

 找回密码
 注册
查看: 1255|回复: 0

【转帖】#pragma once是什么意思

[复制链接]
发表于 2008-12-18 10:26:52 | 显示全部楼层 |阅读模式
  在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. 并且, 使用#pragma   once虽然方便,但将导致代码移植性变差,因为只有VC的编译器能认
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-9 10:37 , Processed in 0.035564 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表