C stdbool.h
为类型#define
添加_Bool
来布尔。
我知道使用#define
代替typedef
来允许#undef
- 遗留代码冲突。但为什么bool_t
(用于匹配其他标准类型)代替bool
? _t
仅用于typedef
类型吗?
我问,因为我正在处理的平台为bool_t
添加了_Bool
的typedef。
编辑:正确地指出,以下内容可能基于意见,因此请将其视为我上述主要问题的原因。
所以我想知道我应该使用它还是继续使用bool
?我有点像前者使布尔标准类型形式与其他标准类型匹配的方式。
答案 0 :(得分:4)
C使用C99标准引入了bool
宏(扩展为_Bool
)。他们可能选择名称bool
而不是bool_t
,因为1998年的C ++命名为布尔类型bool
。在C ++ 98中,所有整数类型(C90中已有wchar_t
除外)都不使用_t
后缀。
答案 1 :(得分:1)
我认为您刚刚发现标准不一致。 bool
不是唯一一个名称没有_t
后缀的类型。例如,考虑<setjmp.h>
。它定义jmp_buf
,显然是typedef
,但不会以_t
结尾。
我认为它不是bool_t
的主要原因是它看起来像属于标准类型系列int
等。但是,它们不能由于兼容性原因,请将类型命名为bool
,因此_Bool
。
至于你是否应该使用bool
或bool_t
我认为这个问题是基于意见的,不能仅仅通过使用事实来回答。但是,我建议您选择其中一个,并在编码指南中记录该决定。