这些代码是什么意思啊???#if !defined(AFX__H__72409B11_2D53_4D4E_B5EF_09D1042356BE__INCLUDED_)
#define AFX__H__72409B11_2D53_4D4E_B5EF_09D1042356BE__INCLUDED_这些代码中间,为什么有的有一个下划线,有的有两个,他们各是什么意思?
还有,后面的那一数字和下划线的组合是什么意思啊?
各位大侠能否给我详细解释解释??
另外,在这上面怎么给分啊?
每次都说我所给的分数与总合不合,不懂了
再次请教 ;

解决方案 »

  1.   

    应该是根据GUID产生的一个文件标识吧!
      

  2.   

    不管有几个下划线,只要该变量符合变量定义的规则就可以了
    AFX__H__72409B11_2D53_4D4E_B5EF_09D1042356BE__INCLUDED_ 这可以看作是一个变量名字,尽管是宏定义
    #if !defined(AFX__H__72409B11_2D53_4D4E_B5EF_09D1042356BE__INCLUDED_)
    #define AFX__H__72409B11_2D53_4D4E_B5EF_09D1042356BE__INCLUDED_
    这段代码的意思就是
    如果还没有定义 AFX__H__72409B11_2D53_4D4E_B5EF_09D1042356BE__INCLUDED_
    那么就定义 AFX__H__72409B11_2D53_4D4E_B5EF_09D1042356BE__INCLUDED_
    接下来底下应该还有更多具体的定义的一般这些宏定义是放在头文件里的,为了防止重复定义
      

  3.   

    AFX__H__72409B11_2D53_4D4E_B5EF_09D1042356BE__INCLUDED_只不过是VC根据一定的算法产生的一个字符串。
    因为#if !defined 的目的是防止该.h文件被重复的包含,相当于#pragma once,如果你把上面的字符串写成你自己定义的就可能与其他头文件重复,将导致如果一个.cpp同时包含两个相同字符串定义的.h文件,那么只有一个.h文件被包含,另外一个将被忽略。
    这样看来就可以理解为什么了。
    72409B11_2D53_4D4E_B5EF_09D1042356BE确实是用GUIDGEN.EXE产生的COM中的GUID,下划线只是把他们连接起来,这个看COM的书就知道了。
      

  4.   

    如果使用ClassWizard生成类都有这样的标识
    是标识头文件的
    之所以有这样的标识,是为了在编译的时候只编译一次
    因为用户有可能多次包含头文件,否则会重复编译,结果就出错了
    AFX__H__72409B11_2D53_4D4E_B5EF_09D1042356BE
    前面部分是文件名,点(.)用下划线(_)表示,后面是随机产生的GUID