为什么C标准bool不bool_t?

时间:2015-03-27 10:38:38

标签: c types boolean

C stdbool.h为类型#define添加_Bool来布尔。

我知道使用#define代替typedef来允许#undef - 遗留代码冲突。但为什么bool_t(用于匹配其他标准类型)代替bool_t仅用于typedef类型吗?

我问,因为我正在处理的平台为bool_t添加了_Bool的typedef。

编辑:正确地指出,以下内容可能基于意见,因此请将其视为我上述主要问题的原因。

所以我想知道我应该使用它还是继续使用bool?我有点像前者使布尔标准类型形式与其他标准类型匹配的方式。

2 个答案:

答案 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

至于你是否应该使用boolbool_t我认为这个问题是基于意见的,不能仅仅通过使用事实来回答。但是,我建议您选择其中一个,并在编码指南中记录该决定。