社区
C++ 语言
帖子详情
#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
打赏
收藏
#pragma once是什么意思
(1)#pragma once是什么意思? (2)#pragma once是否等价于: #ifndef A_H #define A_H ...//Here is code. #endif
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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就知道。
正像您说的,两者的功能是一致的。
#pragma
once用法
详细介绍
#pragma
once用法,对于初学者可以学习一下
全面了解
#pragma
once与 #ifndef的区别
下面小编就为大家带来一篇全面了解
#pragma
once与 #ifndef的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
《C深度解析》第二章 C预编译——宏定义、条件编译、头文件包含、特殊预编译关键字
(3)条件编译:#if、#else、#elif #endif、#ifdef和#ifndef、#if与defined、条件编译与配置文件 (4)一些特殊的预编译关键字与实际应用:defined、#error、#line、#与##、
#pragma
(5)文件包含:是否只能包含.h...
C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
主要介绍了C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别的相关资料,需要的朋友可以参考下
头文件免费下载
#pragma
once #endif // _MSC_VER > 1000 // TODO: reference additional headers your program requires here //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations ...
C++ 语言
64,685
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章