MFC中都一些#define 里那些乱乱的都是什么东西?

[复制链接]
查看11 | 回复4 | 2009-1-29 22:47:40 | 显示全部楼层 |阅读模式
比如某个 *。h
#if !defined(AFX_TEST06DLG_H__A19BC1BE_C5F4_4695_B28B_5C9274F3A425__INCLUDED_)
#define AFX_TEST06DLG_H__A19BC1BE_C5F4_4695_B28B_5C9274F3A425__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
这都是什么呀?为把它删除里 发现程序一样可以运行呀 ?
假如为 自己写一个.h 的头文件放在MFC都 程序里是不是也要加上那一堆乱乱都 define呀 ??

回复

使用道具 举报

千问 | 2009-1-29 22:47:40 | 显示全部楼层
其实是为了防止一个头文件被包含多次~~~例如有a.hb.hc.cpp其中b.h包含了a.hc.cpp中包含了a.h和b.h如果没有这些定义的话在编译c.cpp的时候编译器就会告诉你xxxx被重定义或被定义了多次导致编译失败加上这些定义后就能保证a.h只会被包含一次了...
回复

使用道具 举报

千问 | 2009-1-29 22:47:40 | 显示全部楼层
是#pragma once 的兼容版本那堆乱七八糟的字符是自动生成的对这个文件的标识.只要唯一就可以你要是自己写, 用 #pragma once 一行 就可以....
回复

使用道具 举报

千问 | 2009-1-29 22:47:40 | 显示全部楼层
对于这些宏在这儿解释非常麻烦,而且MFC有太多宏,在这儿真诚给你探讨下怎么学习吧。
MFC内部是一个非常复杂的结构体系,各个类之间都有复杂的联系,除了简单的层层继承关系,就是巧妙的宏定义语句。宏定义是一件非常聪明的解决MFC中消息传递、消息地图(massage_map)、数据保存...的机制,想要深入学好windows编程就要弄清楚这原理所在(当然...
回复

使用道具 举报

千问 | 2009-1-29 22:47:40 | 显示全部楼层
宏定义和条件编译...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行