社区
C++ 语言
帖子详情
#pragma once和#ifndef有什么区别?
elemusic
2011-09-29 01:17:28
平时看的都是#ifndef xxx,#define xxx,#endif
今天看到还有人用#pragma once,看起来好像是想实现相同的功能。
请问两者有什么区别么?哪个更好?感觉如果功能相同的话#pragma once写着比较方便、简洁。
...全文
182
4
打赏
收藏
#pragma once和#ifndef有什么区别?
平时看的都是#ifndef xxx,#define xxx,#endif 今天看到还有人用#pragma once,看起来好像是想实现相同的功能。 请问两者有什么区别么?哪个更好?感觉如果功能相同的话#pragma once写着比较方便、简洁。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
elemusic
2011-09-29
打赏
举报
回复
原来如此,这么说的话如果只考虑MS平台还是用#pragma once好了。
不错,学到了。以后就用他。
星羽
2011-09-29
打赏
举报
回复
转:
三.#pragma once 与 #ifndef #define #endif
(1)从定义上即可看出,pragmas指令是某种机器或者操作系统独有的,并且不同编译器也常常有别。#pragma once这个是编译器相关指令,就是说在这个编译系统
上能用,但是在其他编译系统 不一定型,也就是说移植型差。不过现在基本上
已经是每个编译器都有这个定义了。
#ifndef #define #endif这个是语言支持指令,这是C/C++语言中的宏定义,通过
宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的。如果写的程序要 跨平台,最好使用这种方式。
(2)#ifndef #define #endif #ifndef 还有其它作用,防止头文件重复引用只是
其中一个应用而已。#pragma只有微软支持。
(3)#ifndef #define #endif 他读到#ifndef之后,如果已经定义过了,就会跳过
这一大片,一直到#endif为止。这将增加build时间,因为每次compiler都会打开这个文件,然后搜索全文件一遍。而如果碰到了#pragma once,他就会立刻停止
fox000002
2011-09-29
打赏
举报
回复
可惜 #pragma once 是 MSC specific
不可移植,换个编译器还得修改一遍代码
pathuang68
2011-09-29
打赏
举报
回复
他们可以实现类似的功能,但#ifndef xxx,#define xxx,#endif要灵活一些。
全面了解
#pragma
once与
#ifndef
的
区别
在能够支持这两种方式的编译器上,二者并没有太大的
区别
,但是两者仍然还是有一些细微的
区别
。 方式一:
#ifndef
__SOMEFILE_H__ #define __SOMEFILE_H__ … … // 一些声明语句 #endif 方式二:
#pragma
once … ...
C语言头文件避免重复包含、
#pragma
once和
#ifndef
区别
一般情况下,我们都是把函数声明、类定义、模板定义等写到一个头文件里,需要时将相应的头文件用#include包含到源文件(*.cpp文件)里来。但头文件中又允许包含其它的头文件,这样就难免发生某个头文件被重复地包含...
《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 之前一直用的很好,今天和同事的配合中发现自己没有真正理解pragma once。 原因:同事喜欢把公共的头文件通过生成后事件复制到一个公共的...
C++EGE: Ballon Ball 动画
#pragma
once #endif
#ifndef
__cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #if defined(_INC_CONIO) || defined(_CONIO_H_) #error can not include "conio.h...
C++ 语言
64,666
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章