为什么使用而不是_Bool?
每当我需要一个布尔类型时,我被告知要么创建一个,要么更好,使用stdbool.h
。
由于stdbool.h
使用typedef bool _Bool
,是否有理由使用头而不是使用类型_Bool
? 它只是用于其他宏( /* #define true 1 #define false 0 */
)?
添加到语言中的明显类型是bool
。 但不幸的是,编写了大量代码,其中包括其他形状和forms的bool
。 回想一下,仅在C99中添加了对布尔类型的支持。
所以C语言委员会别无选择,只能为它提取一个保留的标识符( _Bool
)。 但是,由于明显的类型名称选择仍然相同,因此添加了stdbool.h
以允许用户使用明显的名称。 这样,如果您的代码没有自制的bool
,您可以使用内置的bool
。
所以如果你不受一些现有的自酿啤酒的限制,那么确实使用stdbool.h
。 它将是标准类型,具有类型带来的所有好处。
常见的做法一直是使用bool
但是当这种类型在C99中被正式引入标准时,他们不想打破“自己动手”的实现。 因此他们将_Bool
类型视为非官方bool
的一种黑客行为。 现在没有类型名称冲突。 无论如何,重点是,除非遗留代码库中断,否则使用bool
。
他们是一样的。 bool
是_Bool
的别名。 在我们使用的C99之前,我们没有这种类型。 (早期使用仅限于整数tyoe,0表示假,1表示真实)。
你可能不会使用它。 即使你可以undef
bool
(但建议不要这样做)。 但是包含它( stdbool.h
和bool
别名的_Bool
)是好的,因为如果有一天它变得保留,你的代码就符合这一点。 1
你可以用其他方式使用bool
但最好不bool
。 因为一般情况下这个stdbool.h
被引入时它有逐渐使它成为标准的计划,然后更严格的规则适用于我们不能将bool
用作其他东西并且它将被保留为关键字 。