C中是否允许布尔返回类型?
当我试图在GCC编译器中编译返回类型为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 !
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;