2011-08-12 36 views
7

Khi tôi cố gắng biên dịch một hàm với kiểu trả về bool trong trình biên dịch GCC, trình biên dịch ném cho tôi lỗi này.Kiểu trả về boolean được cho phép trong C?

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

Nhưng khi tôi thay đổi kiểu trả về để int, nó là nhận được biên soạn thành công.

Chức năng như sau.

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

Ở đây tôi so sánh hai danh sách được liên kết. Là kiểu trả về bool được hỗ trợ trong C hay không?

+0

'foo' là gì ?? –

+0

xin lỗi. Tôi đã chỉnh sửa. Kiểm tra ngay. – Vivek

+1

Nếu cả n1 và n2 đều là NULL, có thể bạn sẽ muốn trả về giá trị true. – eyalm

Trả lời

16

bool không tồn tại dưới dạng từ khóa trước C99.

Trong C99, nó sẽ hoạt động, nhưng như @pmg chỉ ra bên dưới, nó vẫn không phải là một từ khóa. Đó là macro được khai báo trong <stdbool.h>.

+0

Vì vậy, u có nghĩa là để nói rằng nó sẽ không làm việc trong trình biên dịch GCC? – Vivek

+5

+1 'bool' là một typedef (trong' ') với từ khóa C99, và kiểu được xác định trước,' _Bool'. – pmg

+0

@pmg: Tốt. Đã làm rõ câu trả lời của tôi. –

7

cố gắng bao gồm:

#include <stdbool.h> 
+0

Có. Điều đó hiệu quả. +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

Vui lòng Thêm một số nội dung – Rajesh

Các vấn đề liên quan