windows winforms - Unterschied BOOL und bool?




tag property (4)

In VC ++ haben wir den Datentyp "BOOL", der den Wert TRUE oder FALSE annehmen kann, und wir haben den Datentyp "bool", der den Wert true oder false annehmen kann.

Was ist der Unterschied zwischen ihnen und wann sollte jeder Datentyp verwendet werden?


Answers

bool ist ein integrierter C ++ - Typ, während BOOL ein Microsoft-spezifischer Typ ist, der als int definiert ist. Sie können es in windef.h :

typedef int                 BOOL;

#ifndef FALSE
#define FALSE               0
#endif

#ifndef TRUE
#define TRUE                1
#endif

Die Werte für ein bool sind true und false , während für BOOL Sie einen beliebigen int Wert verwenden können, obwohl TRUE und FALSE Makros im windef.h Header definiert sind.

Dies bedeutet, dass der Operator sizeof 1 für bool (die Standardzustände, obwohl die Größe von bool die Implementierung ist) und 4 für BOOL .

Quelle: Artikel in Codeguru


Um hinzuzufügen, was luvieere gesagt hat, können Sie etwas anderes als TRUE oder FALSE von einer Funktion zurückgeben, die ein BOOL zB

BOOL myFunc(int a)
{
    if (a < 3) return FALSE;
    else if (a > 3) return TRUE;
    else return 2;
}

Und das ist möglich, weil ein BOOL im Wesentlichen ein int .

Bitte beachten Sie, dass dies nicht ratsam ist, da es die allgemeine Lesbarkeit des Codes stark beeinträchtigt, aber es ist etwas, auf das Sie stoßen können und Sie werden sich wundern, warum es so ist.


Windows-API hatte diesen Typ, bevor bool in C ++ geworfen wurde. Und deshalb gibt es immer noch alle Windows-Funktionen, die BOOL verwenden. C unterstützt keinen bool Datentyp, daher muss BOOL bleiben.


Versuchen Sie DUMA





windows winapi visual-c++ mfc