windows BOOL和bool有什么区别?




winapi visual-c++ (3)

要添加到luvieere所说的内容,您可以从返回BOOL的函数返回TRUEFALSE ,例如,

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

这是可能的,因为BOOL本质上是一个int

请注意,这是不可取的,因为它严重破坏了代码的一般可读性,但它是你可以遇到的东西,你会想知道为什么会如此。

在VC ++中,我们有数据类型“BOOL”,它可以假定值为TRUE或FALSE,并且我们有数据类型“bool”,它可以假定值为true或false。

它们之间的区别是什么时候应该使用每种数据类型?


bool是内置的C ++类型,而BOOL是Microsoft特定类型,定义为int 。 你可以在windef.h找到它:

typedef int                 BOOL;

#ifndef FALSE
#define FALSE               0
#endif

#ifndef TRUE
#define TRUE                1
#endif

booltruefalse ,而对于BOOL您可以使用任何int值,但windef.h头中定义了TRUEFALSE宏。

这意味着sizeof运算符将为bool 1(但标准状态, bool的大小是实现定义的),而BOOL的大小为4。

资料来源: Codeguru文章


在将bool抛入C ++之前,Windows API具有此类型。 这就是为什么它仍然存在于所有采用BOOL的Windows功能中。 C不支持bool数据类型,因此BOOL必须保留。







mfc