首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><stdbool.h>是做什么的?

<stdbool.h>是做什么的?
EN

Stack Overflow用户
提问于 2022-11-26 13:12:52
回答 2查看 76关注 0票数 -3

当在C代码中使用<stdbool.h>时,它会做什么?

我在维基百科上搜索,但没有得到我的语言的答案,我希望有人能向我解释它的意思。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-26 14:17:49

当C标准委员会最终在1999年在C语言(C99)中添加了对布尔类型的支持时,他们不希望在语言语义中创建不兼容的更改,因此他们没有使booltruefalse新关键字在已经为类型或变量使用这些标识符的程序中造成错误,它们只为布尔类型添加了_Bool关键字,而布尔类型已经是一个保留标识符。

然而,为了使这些单词可用于具有标准语义的新程序,他们还添加了一个新的标准头文件<stdbool.h>,其中包括该规范:

<stdbool.h>

7.18布尔类型和值

1头<stdbool.h>定义了四个宏。

2.宏观

布尔值

扩展到_Bool

3其余三个宏适合用于#if预处理指令。他们是

真的

它扩展为整数常量((_Bool)+1u)

错误

它扩展为整数常量((_Bool)+0u),以及

__bool_true_false_are_defined

它扩展为整数常量1

4尽管有7.1.3的规定,程序可能会取消定义,然后重新定义宏booltruefalse

我想要在程序中使用布尔变量,包括<stdbool.h>头文件,用bool类型声明它们,并使用truefalse作为常量值。

注意,宏这个短语适合在#if预处理指令中使用:true被定义为((_Bool)+1u),而不是((_Bool)1u),因此#if true扩展到#if ((_Bool)+1u),最终扩展到#if ((0)+1u),从而定义了要编译的源代码块,而#if ((0)1u)则会导致预处理错误。

票数 1
EN

Stack Overflow用户

发布于 2022-11-26 13:40:14

我已经浏览过上面链接的维基百科页面,上面说这个头文件是1999年引入C的。

我认为当时我们可能无法使用bool或真假关键字,因为我们现在能够使用。

可能是在那个时候使用它们,我们必须包括那个头文件。

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74582472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档