2011-08-12 11 views
7

GCCコンパイラで戻り値タイプboolの関数をコンパイルしようとすると、コンパイラはこのエラーを返します。Cではbooleanの戻り値の型が許可されていますか?

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; 
} 

ここでは、2つのリンクリストを比較しています。 boolの戻り値の型はCでサポートされているかどうか

+0

'foo'は何ですか? –

+0

申し訳ありません。私は編集しました。今すぐチェックしてください。 – Vivek

+1

n1とn2の両方がNULLの場合は、trueを返すことをお勧めします。 – eyalm

答えて

16

boolはキーワードC99より前に存在しません。

C99では、それはうまくいくはずですが、@pmgは以下の点を指摘していますが、これはまだキーワードではありません。これは<stdbool.h>で宣言されたマクロです。

+0

GCCコンパイラではうまくいかないと言っていますか? – Vivek

+5

+1 'bool'はC99キーワードのtypedef(' ')であり、事前定義型' _Bool'です。 – pmg

+0

@pmg:良い点。私の答えを明確にしました。 –

7

が含まれるようにしてみてください。

#include <stdbool.h> 
+0

はい。それはうまくいった。 +1。 :D – Vivek

2
#include<stdio.h> 
#include<stdbool.h> 
void main(){ 
    bool x = true; 
    if(x) 
     printf("Boolean works in 'C'. \n"); 
    else 
     printf("Boolean doesn't work in 'C'. \n"); 
} 
+0

親切に内容を追加 – Rajesh

関連する問題