In VC++ we have the data type “BOOL” which can assume the value TRUE or FALSE, and we have the data type “bool”, which can assume the value true or false.
What is the difference between them and when should each data type be used?
bool
is a built-in C++ type while BOOL
is a Microsoft specific type that is defined as an int
. You can find it in windef.h
:
typedef int BOOL;
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
The values for a bool
are true
and false
, whereas for BOOL
you can use any int
value, though TRUE
and FALSE
macros are defined in the windef.h
header.
This means that the sizeof
operator will yield 1 for bool
(the standard states, though, that the size of bool
is implementation defined), and 4 for BOOL
.
Source: Codeguru article