Warum benutzt man fast immer BOOL statt bool?



  • In den meisten MFC-Programmen sehe ich häufig den Ausdruck BOOL
    z.B. in

    BOOL CMyApp::InitInstance()
    {
        m_pMainWnd = new CMyFrame();
        m_pMainWnd->ShowWindow(m_nCmdShow);
    
        m_pMainWnd->UpdateWindow();
        return TRUE;
    }
    

    Warum benutzt man hier keinen herkömmlichen C++ Ausdruck bool, auch wenn er verfügbar ist?

    Danke.



  • Weil die MFC noch aus Zeiten ist, als C und C++ noch kein bool kannten. Deshalb gabs damals das BOOL-Makro. Heute würde das natürlicher keiner mehr machen, wenn jemand eine Library von Grund auf neu entwickeln würde.

    Bei der MFC ist es also historisch bedingt.



  • Jetzt ist das völlig klar.
    Danke.



  • Schau mal in die windef.h
    Dort findest Du neben

    typedef int WINBOOL,*PWINBOOL,*LPWINBOOL;
    #ifndef XFree86Server
    #ifndef __OBJC__
    typedef WINBOOL BOOL;
    #else
    #define BOOL WINBOOL
    #endif
    

    auch

    #ifndef FALSE
    #define FALSE 0
    #endif
    #ifndef TRUE
    #define TRUE 1
    #endif
    

    anstelle true und false.

    Kennt jemand den Sinn von WINBOOL?



  • Naja... eigentlich ist BOOL doch eh nur in Windows anzustreffen. Warum manche so goil darauf sind den zu benutzen? ka 😃 vllt weil man dann bsw folgendes machen kann 😃

    BOOL bStupid = FALSE;
    ++bStupid;
    


  • eigentlich ist BOOL doch eh nur in Windows anzustreffen.

    Was heißt nur? MS Windows ist im PC-Bereich immer noch das vorherrschende Betriebssystem. 😃


  • Administrator

    (D)Evil schrieb:

    Naja... eigentlich ist BOOL doch eh nur in Windows anzustreffen. Warum manche so goil darauf sind den zu benutzen? ka 😃 vllt weil man dann bsw folgendes machen kann 😃

    BOOL bStupid = FALSE;
    ++bStupid;
    

    Hat durchaus auch noch andere Gründe. Z.b. wenn du einen alten und einen neuen BOOL Wert hast, kannst du was interessantes machen um zu sehen ob was verändert wurde, bzw. ob etwas in einer Zählliste dazugefügt werden muss, abgezogen oder stehen gelassen:

    // BNew und BOld sind vom Typ BOOL
    // nCount ist vom Typ int
    nCount += (BNew - BOld);
    

    Wenn BOld und BNew gleich sind, wird nix verändert. Wenn BNew TRUE ist und BOld FALSE, wird eins dazu gezählt. Wenn BNew FALSE ist und BOld TRUE, wird eins abgezogen. Wenn du dafür die bool's verwendest, bekommst du immer blöde Warnungen, bei BOOL nicht. 😉

    Grüssli


Anmelden zum Antworten