#pragma once 的问题。

bridge 2001-03-11 10:37:00
#if !defined(AFX_MAINFRM_H__2A7D45A9_1608_11D5_A261_0050BA1A68C7__INCLUDED_)
#define AFX_MAINFRM_H__2A7D45A9_1608_11D5_A261_0050BA1A68C7__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

...............

#endif

以上是VC的一个头文件定义方式。
采用 #ifndef _XXX_
#define _XXX_
........
#endif
已经可以避免头文件在整个工程中有多个副本。那么这里在里用 #pragma once 是为了什么情况用的呢?
#pragma once 的意思好象也是为了避免某个文件在工程中有多个副本的宏。在这里都用到了到底是怎么回事呢?

谢谢.
...全文
218 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
In355Hz 2001-03-11
  • 打赏
  • 举报
回复
#pragma是一种编译指令,使用格式为#pragma token-string,象
#pragma data_seg(".mdata").....#pragma data_seg()可以让编译器把两者之间的所有已初始化变量放入一个新的.mdata段中。
而#pragma once的意思是要求编译器在编译过程中只将包含此命令文件编译(打开)一次,从而避免重复包含此文件。
joke100 2001-03-11
  • 打赏
  • 举报
回复
你说的不错,它的作用确实如此。#pragma once的作用就是这样子。


#ifndef _XXX_
#define _XXX_
........
#endif
的作用要在所有引用这个头文件的CPP文件作相应配合才能达到效果,它的本意是在编译时同一个CPP文件不要多次包含之。

即用
#ifndef _XXX_
#include "XXX.h"
#endif配合
你应当知道很多情况下,在CPP里仅是一行
#include "XXX.h"
这样就不能避免该文件被多次包含啦。
bridge 2001-03-11
  • 打赏
  • 举报
回复
就这点分数,请笑纳

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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