#pragma once是什么意思

yeahchang 2004-01-19 09:43:03
(1)#pragma once是什么意思?

(2)#pragma once是否等价于:
#ifndef A_H
#define A_H
...//Here is code.
#endif
...全文
1503 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fireseed 2004-01-20
  • 打赏
  • 举报
回复
使用#pragma once虽然方便,但将导致代码移植性变差,因为只有VC的编译器能认
yeahchang 2004-01-20
  • 打赏
  • 举报
回复
To mmosquito(): 您是指:#include "zlib.h"和#include <zlib.h>时,应分别选用pragma once和ifndef define endif对吗??
yeahchang 2004-01-20
  • 打赏
  • 举报
回复
To mmosquito(): 对于“公有或者接口的文件”的这个例子您能再具体化些吗?
byyyyy 2004-01-19
  • 打赏
  • 举报
回复
Specifies that the file, in which the pragma resides, will be included (opened) only once by the compiler in a build. A common use for this pragma is the following:

//header.h
#pragma once
// Your C or C++ code would follow:
mmosquito 2004-01-19
  • 打赏
  • 举报
回复
以前写的,翻出来看看

在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.

呵呵,你压根儿用不着是吧,当我没说过。
lifanxi 2004-01-19
  • 打赏
  • 举报
回复
查查MSDN就知道。
正像您说的,两者的功能是一致的。

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧