我注意到Linux内核代码使用bool类型,但我以为bool类型是c++类型。bool是标准的C扩展名(例如,ISO C90)还是GCC扩展名?
当前回答
C99添加了一个内置的_Bool数据类型(详见维基百科),如果您#include <stdbool.h>,它将bool作为_Bool的宏提供。
您特别提到了Linux内核。它假定存在_Bool类型,并在include/linux/types.h中提供bool类型定义。
其他回答
C99添加了一个内置的_Bool数据类型(详见维基百科),如果您#include <stdbool.h>,它将bool作为_Bool的宏提供。
您特别提到了Linux内核。它假定存在_Bool类型,并在include/linux/types.h中提供bool类型定义。
stdbol .h是c99年引入的
h定义了true和false宏,但是请记住它们被定义为1和0。
这就是sizeof(true) = sizeof(int)的原因,对于32位架构,sizeof(int)为4。
_Bool是C99中的关键字:它指定类型,就像int或double一样。
6.5.2 2声明为_Bool类型的对象 是否大到足以存储值0 和1。
不,在ISO C90中没有bool。
下面是标准C(不是C99)中的关键字列表:
汽车 打破 情况下 字符 常量 继续 默认的 做 双 其他的 枚举 走读生 浮动 为 转到 如果 int 长 注册 返回 短 签署 静态 结构体 开关 类型定义 联盟 无符号 无效 挥发性 而
这里有一篇文章讨论了在内核和标准中使用的C语言的其他一些区别:http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/index.html
推荐文章
- C多行宏:do/while(0) vs作用域块
- time_t最终的类型定义是什么?
- 我需要显式处理负数或零时,总和平方数字?
- 函数名周围的括号是什么意思?
- 用C语言创建自己的头文件
- 格式化IO函数(*printf / *scanf)中的转换说明符%i和%d之间的区别是什么?
- main()中的Return语句vs exit()
- 如果不是内存地址,C指针到底是什么?
- 我如何在Visual Studio中预处理后看到C/ c++源文件?
- 保护可执行文件不受逆向工程的影响?
- 在一台主机上有多个glibc库
- 从C语言的函数返回一个struct
- C99 'restrict'关键字的实际用法?
- 检查子字符串存在于C中的字符串中
- 禁用所有gcc警告