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

来源:百度知道 编辑:UC知道 时间:2024/09/23 20:19:16
比如某个 *。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呀 ??

其实是为了防止一个头文件被包含多次~~~
例如有
a.h
b.h
c.cpp
其中b.h包含了a.h
c.cpp中包含了a.h和b.h
如果没有这些定义的话在编译c.cpp的时候编译器就会告诉你xxxx被重定义或被定义了多次导致编译失败
加上这些定义后就能保证a.h只会被包含一次了

是#pragma once 的兼容版本

那堆乱七八糟的字符是自动生成的对这个文件的标识.只要唯一就可以

你要是自己写, 用 #pragma once 一行 就可以.

对于这些宏在这儿解释非常麻烦,而且MFC有太多宏,在这儿真诚给你探讨下怎么学习吧。
MFC内部是一个非常复杂的结构体系,各个类之间都有复杂的联系,除了简单的层层继承关系,就是巧妙的宏定义语句。宏定义是一件非常聪明的解决MFC中消息传递、消息地图(massage_map)、数据保存...的机制,想要深入学好windows编程就要弄清楚这原理所在(当然,这个过程非常头疼,要下工夫),只是普通编程爱好者的话可以不急着弄清其就里,直接学习怎么用vc编程就好,等有一定实践与时间时可以深入学习,这是推荐《深入浅出MFC》,里面都是在剖析MFC内部原理,真的终身受用(呵呵,我决不是书托儿~,对灯发誓!)。
我也是一步步走过来的,学这玩意头疼,贵在坚持,开始了就不要放弃!到一定程度能编出不少实用程序了就来兴趣了。
祝君好运!新年快乐!

宏定义和条件编译