请问下面代码的含义,谢谢!

by92419 2003-02-23 02:44:18
在用VC++的向工程中添加一个新类的时候,在该类的头文件中会有如下代码:

1、#if !defined(AFX_F_H__FA81B7DC_1805_4581_8A5D_7BE457BB72E1__INCLUDED_)
2、#define AFX_F_H__FA81B7DC_1805_4581_8A5D_7BE457BB72E1__INCLUDED_

3、#if _MSC_VER > 1000
4、#pragma once
5、#endif // _MSC_VER > 1000

class f
{
public:
f();
virtual ~f();

};

6、#endif // !defined
7、(AFX_F_H__FA81B7DC_1805_4581_8A5D_7BE457BB72E1__INCLUDED_)

请问从1到5是什么意思?第6、7中,前面没有相对应底#if,为什么在这里会有一个
#endif?
...全文
44 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
by92419 2003-04-14
  • 打赏
  • 举报
回复
Test
by92419 2003-04-12
  • 打赏
  • 举报
回复
OK
hellophp 2003-02-24
  • 打赏
  • 举报
回复
up
garbriel 2003-02-23
  • 打赏
  • 举报
回复
Look《深入浅出MFC》
FMD 2003-02-23
  • 打赏
  • 举报
回复
经常会碰到同一头文件被包含多次
使用预处理1、2、6、7使头文件只编译一次
在第一次编译它时,定义了AFX_F_H_....,并采用3-6间内容。
再次碰到包含此头文件时,满足defined条件.故3-6中的内容不被采用。
即相当以下逻辑

if(没有定义 AFX_F_...)
{
定义 AFX_F_...
编译头文件的实际内容
}
else
跳过此文件

6.7的#endif与1句对应
3,4,5 实现根据编译器版本条件编译
版本大于1.0,使用、#pragma once
作用是好像是编译一次,但这需要编译器版本够高才支持。
使用1,2,6,7的写法则更加实用一些。???

AFX_F_H__FA81B7DC_1805_4581_8A5D_7BE457BB72E1__INCLUDED_
之所以这么长,是VC工作环境为了文件内容管理方便、添加了一些标识。
自己书写,可简化。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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