我下载一个对话框里嵌入对话框的源代码历程.在一个自定义的类里的头文件.有如下#if !defined(AFX_SUBFORMCOLLECTION_H__EEF10080_9028_11D3_8594_00105A744766__INCLUDED_)
#define AFX_SUBFORMCOLLECTION_H__EEF10080_9028_11D3_8594_00105A744766__INCLUDED_这个怎么写得那么复杂,有必要吗?还是有什么规律求大侠正解

解决方案 »

  1.   

    这个事他在MFC中新添加一个类之后,该类自动生成的头文件,你可以自己试一试。
      

  2.   

    那一串是自动生成的,理论上不会重复的。这样定义可以防止头文件被重复引用,不过从VC6开始已经支持#pragma once了,可以实现同样的作用,这个只能说是一个传统了
      

  3.   

    楼主的例子是MFC自动生成的…………
    你也可以自己写,只要不重复就行
      

  4.   

    应该类似于GUID的生成策略吧,没研究过
      

  5.   

    #if !defined(AFX_SUBFORMCOLLECTION_H__EEF10080_9028_11D3_8594_00105A744766__INCLUDED_)
    #define AFX_SUBFORMCOLLECTION_H__EEF10080_9028_11D3_8594_00105A744766__INCLUDED_
    ……
    这里面的内容只会被编译一次,这就是它的作用
    ……
    #endifAFX_SUBFORMCOLLECTION_H__EEF10080_9028_11D3_8594_00105A744766__INCLUDED
    文件名+随机码,不会重复的
      

  6.   

    那样写仅仅是为了防止头文件重复包含的。我用的VS2005,那里面当你添加一个新类后,只在顶部有一句很简明的#pragma once,就把问题给解决了。头文件你放心随便包含,不会出问题的。
      

  7.   

    不是故意写成这样的,是用类向导生成类时,自动生成的
    目的是防止类重编译
    如果不用类向导,可以写成#pragma once代替