2011-08-12 19 views
7

Cuando intento compilar una función con el tipo de retorno bool en el compilador GCC, el compilador me arroja este error.¿Se permite el tipo de retorno booleano en C?

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

Pero cuando cambio el tipo de retorno a int, cada vez es compilado con éxito.

La función es la siguiente.

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

Aquí estoy comparando dos listas enlazadas. ¿El tipo de retorno bool es compatible con C o no?

+0

¿Cuál es 'foo' ?? –

+0

lo siento. Yo edité Revisalo ahora. – Vivek

+1

Si tanto n1 como n2 son NULL, probablemente desee devolver verdadero. – eyalm

Respuesta

16

bool no existe como palabra clave pre-C99.

En C99, debería funcionar, pero como @pmg señala a continuación, todavía no es una palabra clave. Es una macro declarada en <stdbool.h>.

+0

Entonces, ¿quiere decir que no funcionará en el compilador de GCC? – Vivek

+5

+1 'bool' es un typedef (en' ') a la palabra clave C99, y tipo predefinido,' _Bool'. – pmg

+0

@pmg: Buen punto. Han aclarado mi respuesta. –

7

tratar de incluir:

#include <stdbool.h> 
+0

Sí. Eso funciono. +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

Amablemente Agregue un poco de contenido – Rajesh

Cuestiones relacionadas