我的 linux 的 gcc 编译器不支持布尔值 [重复]

Posted

技术标签:

【中文标题】我的 linux 的 gcc 编译器不支持布尔值 [重复]【英文标题】:My linux's gcc compiler not supporting boolean values [duplicate] 【发布时间】:2013-02-17 11:54:54 【问题描述】:

我正在尝试创建一个返回类型为布尔值的函数......程序的语法似乎是正确的,但编译器给出了错误......

我包含的头文件是:

#include<stdio.h>
#include<stdlib.h>

我创建的函数是:

34.bool checknull(struct node* node)
35.    if ( node != NULL )
36.        return TRUE;
37.       
38.    return false;
39.

我在编译时得到的是

bininsertion.c:34:1: error: unknown type name ‘bool’
bininsertion.c: In function ‘checknull’:
bininsertion.c:36:10: error: ‘TRUE’ undeclared (first use in this function)
bininsertion.c:36:10: note: each undeclared identifier is reported only once for each  function it appears in
bininsertion.c:38:9: error: ‘false’ undeclared (first use in this function)

我试过用小写和大写字母“真,假”,但似乎没有用...

【问题讨论】:

可能重复***.com/questions/1921539/using-boolean-values-in-c 【参考方案1】:

如果需要booltruefalse,则应包括&lt;stdbool.h&gt;。也是true,而不是TRUE


如果你不想包含stdbool.h,你可以使用略显丑陋的_Bool

【讨论】:

包括 stdbool.h 解决了我的问题...谢谢...您能解释一下稍微难看的部分,即如何使用“_Bool”(语法和示例)... @Sabre.Tooth 像​​普通类型一样使用它。所以无论你写bool,你也可以写_Bool。事实上,_Bool 是 C99 中引入的“真实”类型,bool 只是一个别名。他们不能引入bool,因为它在以前的标准中不是保留关键字,所以它会破坏已经使用它的程序。 使用 _Bool 我仍然必须包含 stdbool.h,因为编译器将“true”和“false”视为未声明的变量...thnxxx 寻求帮助... @Sabre.Tooth 是的,或者你可以使用10。但无论如何,我推荐stdbool.h【参考方案2】:

原答案

尝试包含 cstdio 和 cstdlib。可能没有任何区别,但我的编译器也注意到了这些奇怪的错误。曾经有效的东西,现在不再有效

编辑

在 C 中,false 用 0 表示,而 true 用任何非零值表示。

本质上,您可以像这样滚动自己的bool 数据类型

typedef enum false, true bool;

然后你就可以像在你的应用中一样使用它了。

您也可以只包含stdbool.h,它应该与枚举建议类似

【讨论】:

【参考方案3】:

bool 不是数据类型.. 它在 Visual Studio 中运行良好.. 因为它是 Microsoft 特定的东西.. 只需包含stdbool.h,它就可以正常工作:)

【讨论】:

aha.. 我刚刚做了一些搜索.. bool 是 C++ 中的一种数据类型.. :) 编辑按钮不起作用..

以上是关于我的 linux 的 gcc 编译器不支持布尔值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

我在linux环境下怎么就是编译不成功

Linux编译工具:gcc温习

如何在linux中安装gcc编译器?

GCC编译器的使用

Linux gcc命令

GCC使用入门