我注意到Linux内核代码使用bool,但我认为bool是C++类型.bool是标准的C扩展(例如,ISOC90)还是GCC扩展?

推荐答案

bool存在于当前的C-C99中,但不存在于C89/90中.

在C99中,本机类型实际上被称为_Bool,而boolstdbool.h中定义的标准库宏(预期解析为_Bool).类型为_Bool的对象包含0或1,而truefalse也是stdbool.h中的宏.

请注意,顺便说一句,这意味着C预处理器将把#if true解释为#if 0,除非包含stdbool.h.同时,C++预处理器需要作为语言文字来自动识别true.

C++相关问答推荐

VS代码输入需要多次

如何在C中通过转换为char * 来访问float的字节表示?

如何将匿名VLA分配给指针?

如何避免使用相对路径包含在c中

C语言中字符数组声明中的标准

MISRA C:2012 11.3违规强制转换(FLOAT*)到(uint32_t*)

在列表中插入Int指针(C)

用C语言计算文本文件中的整数个数

为什么我从CSV文件中进行排序和搜索的代码没有显示数据的所有结果?

不同原型的危险C函数是可能的

错误...的多个定义(&Q)首先在这里定义&

C-try 将整数和 struct 数组存储到二进制文件中

`预期说明符-限定符-列表在‘(三元运算符中的’token`‘之前

从文件到链表读取日期

I';我试着从.txt文件中读取文本,并用c计算其中的单词数量

";错误:寄存器的使用无效;当使用-masm=intel;在gcc中,但在AT&;T模式

#define X Defined(Y) 是有效的 C/C++ 宏定义吗?

尽管将其标记为易失性,但 gcc 是否优化了我的等待代码?

如何用用户输入的多个字符串填充数组?

SSE 向量与 Epsilon 的比较