每当我需要布尔类型时,我都被告知要创建一个,或者更好的是,使用stdbool.h
.
由于stdbool.h
uses typedef bool _Bool
,是否有理由使用标头而不是仅使用 type _Bool
?仅用于附加宏(/* #define true 1 #define false 0 */
)吗?
添加到语言中的明显类型是bool
. 但不幸的是,编写了大量包含bool
在其他形状和形式中的代码。回想一下,仅在 C99 中添加了对布尔类型的支持。
所以 C 语言委员会别无选择,只能为它提取一个保留标识符 ( _Bool
)。但是,由于类型名称的明显选择仍然相同,stdbool.h
因此添加了允许用户使用明显名称。这样,如果您的代码没有自制的bool
,您可以使用内置的。
因此,stdbool.h
如果您不受某些现有的自制bool
. 它将是标准类型,具有该类型带来的所有好处。
常见的做法一直是使用bool
,但是当类型在 C99 中正式引入标准时,他们不想破坏“roll-your-own”实现。因此,他们将这种类型_Bool
作为一种围绕非官方bool
s 的 hack。现在没有类型名称冲突。无论如何,重点是,bool
除非遗留代码库中断,否则请使用。
他们是一样的。bool
是 的别名_Bool
。在我们使用 C99 之前,我们没有这种类型。(之前的使用仅限于整数 tyoe,其中 0 为假,1 为真)。
你可能不会使用它。即使你可以undef
bool
(但建议不要这样做)。但是包括它(stdbool.h
和bool
别名_Bool
)是好的,因为如果有一天它被保留,你的代码就会遵守它。1
1.你可以使用bool
其他方式,但最好不要。因为一般来说,当它stdbool.h
被引入时,它会逐步使其成为标准,然后在我们不能bool
用作其他东西的地方应用更严格的规则,它将被保留为关键字。