这是我迄今为止包含的所有 .h 文件,但没有
bool
的定义:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <pthread.h>
#include <netdb.h>
#include <fcntl.h>
#include <unistd.h>
#include <event.h>
哪个文件定义了
bool
?
它是 C99 的一部分,并在 POSIX 定义 stdbool.h 中定义。
#include <stdbool.h>
供像我这样的人复制和粘贴。
bool
是只是一个扩展为 _Bool
的宏。您可以使用
_Bool
而不使用
#include
,就像使用
int
或
double
一样;这是一个 C99 关键字。该宏与其他 3 个宏一起在
<stdbool.h>
中定义。定义的宏是
bool
:宏扩展为
_Bool
false
:宏扩展为
0
true
:宏扩展为
1
__bool_true_false_are_defined
:宏扩展为
1
C99 标准 stdbool
C99 N1256 标准草案 7.16“布尔类型和值<stdbool.h>
”说:
1 标题一个关键的见解是,名称
<stdbool.h>
定义了四个宏。2 宏
bool
扩展为_Bool
。3 其余三个宏适合在
#if
预处理指令中使用。他们是true
扩展到整数常量 1,
false
扩展到整数常量 0,并且
_ _bool_true_false_are_defined
扩展到整数常量 1。4 尽管有 7.1.3 的规定,程序仍可以取消定义,然后可能重新定义宏 bool、true 和 false。222)
bool
、
true
和
false
需要标题,因为它们不是保留的,因为它们不以下划线开头。但
_Bool
是一个保留标识符,因此他们可以将其添加到 C99 中,而不需要新的标头。然后6.2.5“类型”定义了
_Bool
:
2 声明为类型变更集摘要部分“前言”中说明了它是在 C99 中添加的事实
_Bool
的对象足够大,可以存储值 0 和 1。
5 第二版取消并取代第一版 ISO/IEC 9899:1990,经 ISO/IEC 9899/COR1:1994、ISO/IEC 9899/AMD1:1995 和 ISO/IEC 9899/COR2 修订和更正: 1996年。与上一版本相比的主要变化包括:相关:[...]
- 中的
布尔类型
true
和
false
是语言关键字 - 预定义的布尔常量。否则,你需要
#include <stdbool.h>
。另请参阅
https://en.cppreference.com/w/c/language/bool_constant。
stdbool.h
这一定有用