2011-08-12 6 views
7

Gdy próbuję skompilować funkcję z typem powrotu bool w kompilatorze GCC, kompilator rzuca mi ten błąd.Czy typ powrotu Boolean jest dozwolony w C?

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘comp’ 

Ale kiedy zmienić typ zwracany do int, jest coraz zestawiane pomyślnie.

Funkcja jest jak poniżej.

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

Tutaj porównuję dwie połączone listy. Czy typ powrotu bool jest obsługiwany w C, czy nie?

+0

Co jest 'foo' ?? –

+0

Przepraszam. Edytowałem. Sprawdź teraz. – Vivek

+1

Jeśli wartości n1 i n2 są równe NULL, prawdopodobnie powinieneś zwrócić wartość true. – eyalm

Odpowiedz

16

bool nie istnieje jako słowo kluczowe przed C99.

W C99 powinno działać, ale jak wskazuje @pmg poniżej, nadal nie jest słowem kluczowym. To makro zadeklarowane w <stdbool.h>.

+0

Czyli chcesz powiedzieć, że nie będzie działać w kompilatorze GCC? – Vivek

+5

+1 'bool' jest typedef (w' ') do słowa kluczowego C99 i predefiniowanym typem' _Bool'. – pmg

+0

@pmg: Dobrze. Wyjaśniłem moją odpowiedź. –

7

spróbować to:

#include <stdbool.h> 
+0

Tak. To się udało. +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

Uprzejmie Dodaj trochę treści – Rajesh

Powiązane problemy