Chuẩn C99 có cho phép C programmers sử dụng từ khóa "true" và "false" không?

Tình hình là em đang đọc đến trang 59 của quyển Head First C thì có 1 đoạn họ nói như sau:

Theo cách hiểu của em thì: Phiên bản đầu tiên của C (ANSI-C) không có giá trị cho true và false, C programmers xem giá trị 0 là false, các giá trị khác là true. Nhưng chuẩn C99 cho phép programmers sử dụng từ khóa true và false …

Sau khi đọc xong đoạn này, em mừng rỡ vội vàng vào Codeblocks và chỉnh Compiler sang chuẩn C99 rồi type 1 đoạn code đơn giản sau:

#include <stdio.h>

int main()
{
       int num = 1;
       if (num == true)
              printf("Hihi.");
       else
              printf("Huhu.");
       return 0;
}

Kết quả là compiler của Codeblocks (gcc) nó báo: 'true' undeclared (first use in this function) => :sob:

Mọi người có thể giải thích cho em tại sao không ạ ? Em xin cảm ơn nhiều :blush:

#include <stdbool.h>

2 Likes

Bạn xem link này nói tuơng đối chuẩn

1 Like

Vậy nếu chỉ muốn dùng bool là phải #include cả 1 cái thư viện luôn hả anh ? Và lúc này bool với _Bool là giống nhau ? :slight_smile:

Cả cái thư viện gì, include để được macro true false thôi.
https://en.wikibooks.org/wiki/C_Programming/C_Reference/stdbool.h

1 Like

:)) Tại bọn lập trình viên cứ than là ko kiểu bool có chứ sao.

2 Likes

Hi Long Dragon.
Không cần thư viện gì cả theêm đoạn này vào đầu file

%:/**/define/**/true /**/0b1/**/
%:/**/define/**/false/**/(0b1/0b10)/**/

bạn cứ define TRUE 1, FALSE 0 cho nó đơn giản nhé,ko quan trọng lắm chỗ đó đâu :smiley:

1 Like

Ừm, để đoạn code:

#define bool _Bool
#define true 1
#define false 0

lên đầu file là cũng ok lắm rồi :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?