mfc中为何要为一些关键字用大写重新进行宏定义呢?如:true 定义成 TRUE
-------------------------------------------
c++中的很多关键是是小写,如true,false等,这些关键字,在mfc中都用大写重新定义了一次,如:
true  重新定义为 TRUE
false 重定义为 FALSE我不知为何增加这么多的宏定义呢?宏定义本来就很多了,可是为何将这些关键字重新定义呢?
而且仅仅是改成大写,有什么必要呢?当然我知道这样做是有原因的,但是我就是想不出来,请大家解惑。
谢谢。 为何要增加这么多的宏定义呢?问题是仅仅将小写改成大写呀?有何意义呢?

解决方案 »

  1.   

    首先,VC中的BOOL不是C中的bool,bool的值只能是true或false,而BOOL的值可以是任意整数
    其次,TRUE定义的值是1,FALSE是0,而不是true和false,所以不存在重定义的问题
    第三,用宏定义代替具体的值是一个好习惯,方便以后升级或者批量修改
      

  2.   

    true  重新定义为 TRUE 
    false 重定义为 FALSE 
    ==========
    谁说TRUE和FALSE是由true和false重新定义的啊?这两者根本就不是同一个类型,true和flase是bool型的变量的两个取值,而BOOL型并不是bool型,BOOL就是int,而TRUE和FALSE前者是1,后者是0,它们是由int型重定义的。另外,这些宏并不是MFC专用的,而是SDK中定义的。
      

  3.   

    而BOOL的值可以是任意整数
    --------------------------
    但是实际上,这样做没有意义呀?
    bool实际有效的值就是0和1呀?
      

  4.   

    其实最关键的是定义BOOL,TRUE,FALSE时,还不存在bool,true和false,他们成为关键字时很晚的事情。如果他们早就是关键字了,我相信所有定义BOOL,TRUE,FALSE的理由都是不成立的
      

  5.   

    TRUE,FALSE是用在c语言的,c语言没有bool型,在c里面0为假,非0为真,这么定义看起来比较明了
    true,false是C++的
      

  6.   

    别混淆
    true,false是boolean(布尔型)的值TRUE,FALSE是BOOL的值
    BOOL是int的宏
    一般
    TRUE对应1
    FALSE对应0语言要扩展才能适合现代编程
      

  7.   

    TRUE,FALSE定义成dword是为了内存对齐提高效率吧
      

  8.   

    主要是微软的工程师们看着这么多的蓝色关键字眼睛受不了,所以把关键字都定义一个宏!
    除 TRUE 和 FALSE 外还有几乎所有的类型(BYTE、CHAR、INT、LONG、DOUBLE、FLOAT……)
      

  9.   

    TRUE和FALSE在C语言中还没有true和false的时候就有了
      

  10.   

    这些宏并不是MFC专用的,而是SDK中定义的。您说的,sdk中定义是什么意思?
      

  11.   

    在C99标准中,C语言是有bool类型的,使用时要包含stdbool.h头文件。只不过微软的编译器不支持,GCC支持。
      

  12.   

    另外我问下,为什么要弄个大写的VOID,在MSDN中VOID的解释为:
    [code]
    //Any type. 
    //This type is declared in WinNT.h as follows:
    #define VOID void
    [/code]
      

  13.   

    另外我问下,为什么要弄个大写的VOID,在MSDN中VOID的解释为: Any type. This type is declared in WinNT.h as follows:
    #define VOID void