每当我需要布尔类型时,就会被告知要么创建一个,要么更好地使用stdbool.h。
既然stdbool.h使用typedef bool _Bool,那么是否有理由使用标头而只使用_Bool类型?它仅仅用于附加宏(/* #define true 1 #define false 0 */)吗?
发布于 2017-11-19 06:53:35
添加到语言中的明显类型是bool。但不幸的是,大量的代码都包含了其他形状和形式的bool。回想一下,只在C99中添加了对布尔类型的支持。
因此,C语言委员会别无选择,只能为它提取一个保留标识符(_Bool)。但是,由于类型名称的明显选择仍然相同,因此添加了stdbool.h以允许用户使用明显的名称。这样,如果您的代码没有自制的bool,您可以使用内置的一个。
因此,如果您没有绑定到一些现有的家庭酿造的stdbool.h,那么确实要使用bool。它将是标准类型,它带来的所有好处,类型。
发布于 2017-11-19 06:53:25
通常的做法一直是使用bool,但是当这种类型正式引入到C99的标准中时,他们不想破坏“滚动自己”的实现。所以他们把_Bool类型作为非官方的bool的一种攻击,现在没有类型名称的冲突。无论如何,要点是,除非遗留代码中断,否则使用bool。
https://stackoverflow.com/questions/47374356
复制相似问题