Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中是否允许布尔返回类型?_C_Boolean - Fatal编程技术网

C中是否允许布尔返回类型?

C中是否允许布尔返回类型?,c,boolean,C,Boolean,当我试图在GCC编译器中编译返回类型为bool的函数时,编译器会抛出此错误 error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘comp’ 但是当我将返回类型更改为int时,它被成功编译 功能如下所示 bool comp(struct node *n1,struct node *n2) { if(n1 == NULL || n2 == NULL) return false; while(n1 !

当我试图在GCC编译器中编译返回类型为
bool
的函数时,编译器会抛出此错误

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘comp’
但是当我将返回类型更改为
int
时,它被成功编译

功能如下所示

bool comp(struct node *n1,struct node *n2)
{
    if(n1 == NULL || n2 == NULL)
    return false;
    while(n1 != NULL && n2 != NULL)
    {
        if(n1->data == n2->data)
        { n1=n1->link; n2=n2->link; }
        else
            return false;

    }
    return true;
}

这里我比较两个链表。bool返回类型在C中是否受支持?

bool
不作为C99之前的关键字存在

在C99中,它应该可以工作,但正如@pmg在下面指出的,它仍然不是一个关键字。它是在

中声明的宏。请尝试包括:

#include <stdbool.h>
#包括
#包括
#包括
void main(){
布尔x=真;
if(x)
printf(“布尔值在“C”中起作用。\n”);
其他的
printf(“布尔值在“C”中不起作用。\n”);
}

手动bool的一种方法

#define true 1
#define false 0
typedef int bool;

bool comp(struct node *n1,struct node *n2)
{
    if(n1 == NULL || n2 == NULL)
    return(false);
    while(n1 != NULL && n2 != NULL)
    {
        if(n1->data == n2->data)
        { n1=n1->link; n2=n2->link; }
        else
            return(false);

    }
    return true;
即返回1或0,但友好地说,你得到的是真是假


毕竟,bool是一个1或0+1
bool
是C99关键字的类型定义(在
中),并且是预定义的类型,
\u bool
。bool也不是C99中的关键字,它是一个由定义的宏,如果您想使用它,需要包含它。(哦,有人在我查找要验证的内容时说了这句话,但我忘了刷新。很抱歉重复。)谢谢你的回答。这澄清了我的疑问+1.如果n1和n2都为NULL,您可能希望返回true。请添加一些内容
#define true 1
#define false 0
typedef int bool;

bool comp(struct node *n1,struct node *n2)
{
    if(n1 == NULL || n2 == NULL)
    return(false);
    while(n1 != NULL && n2 != NULL)
    {
        if(n1->data == n2->data)
        { n1=n1->link; n2=n2->link; }
        else
            return(false);

    }
    return true;