为什么Windows中的BOOL是int类型?

Bit*_*tes -2 c windows winapi

为什么不定义BOOLenum:

enum BOOL {FALSE, TRUE};
Run Code Online (Sandbox Code Playgroud)

是否有任何理由BOOL必须明确指定为int(或任何其他整数类型)?

Rem*_*eau 6

来自Raymond Chen关于此主题的博客文章:

BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool

还有更多的方式来说同样的话.为什么这么多?

因为每个人都是由不同的人在不同的时间发明来解决不同的问题.

BOOL是最古老的一个.它的定义很简单

typedef int BOOL;

C编程语言使用"int"作为其布尔类型,当C是系统编程的酷语言时,Windows 1.0被写回.

绝大多数Win32 API至今仍为C设计,因此它与各种与C兼容的编程语言兼容.

枚举在编译器中存在可移植性问题,与字节大小和位表示的差异有关.此外,enum直到1989年的ANSI C(又名C98)之后才被添加到C中,这是在Windows的三个版本(1985年为1.0,1987年为2.0,1988年为2.1)之后,无论如何,枚举实际上等同于整数.

  • @ Ra'Jiska使它成为一个`char`并不是非常有益,因为在比较等等它仍会被提升为`int`. (2认同)
  • 引用雷蒙德是否有任何与Win API无关的问题?可能不多......;) (2认同)