我注意到 Linux 内核代码使用了 bool,但是我认为 bool 是 C++ 类型。bool 是标准的 C 扩展吗(例如 ISO C90),还是 GCC 的扩展?
我注意到 Linux 内核代码使用了 bool,但是我认为 bool 是 C++ 类型。bool 是标准的 C 扩展吗(例如 ISO C90),还是 GCC 的扩展?
C99添加了一个bool
类型,其语义与C中以前存在的几乎所有整数类型(包括旨在此类目的而定义的用户定义和编译器扩展类型)根本不同,并且一些程序可能已经将其“type-def”为bool
。
例如,给定bool a = 0.1, b=2, c=255, d=256;
,C99的bool
类型将把所有四个对象设置为1。如果C89程序使用typedef unsigned char bool
,则这些对象将分别接收到0、2、255和0。如果它使用char
,那么值可能如上所述,或者c
可能是-1。如果它使用编译器扩展的bit
或__bit
类型,则结果很可能是0、0、1、0(将bit
视为大小为1的无符号位域或具有一个值位的无符号整数类型等效处理)。
不存在这样的东西,可能只是int的宏
-std=gnu89
,它作为C90的扩展支持_Bool
。"include/linux/types.h"中有typedef _Bool bool;
。 - Ian Abbotttypedef _Bool bool;
(提交记录6e21828743247270d09a86756a0c11702500dbfb)并且需要GNU C 3.2或更高版本的内核。 - Ian Abbott