Sử dụng boolean trong macro trong ngôn ngữ C
Nguyên bản trong C không đi kèm kiểu dữ liệu C, vì thế ta phải tự định nghĩa nó. Nhiều khi bạn gặp lỗi của macro khi muốn trả lại kiểu dữ liệu này trong trường hợp sử dụng macro trả lại true và false để biểu thị boolean. Nhưng true và false nhiều khi biên dịch lỗi với GCC. Cách sử dụng boolean trong C phụ thuộc nhiều tiêu chuẩn nếu sử dụng các thư viện chuẩn hoặc là tự định nghĩa nếu không dùng thư viện và phụ thuộc nhiều trình biên dịch có hỗ trợ tiêu chuẩn hay không. Tiêu chuẩn mới nhất hiện nay là C11 ngoài ra còn có tiêu chuẩn C99. GCC thì sử dụng GNU89. Muốn sử dụng C11 thì phải dùng GCC 4.7 và dùng với tuỳ chọn -std=c11.
Có nhiều cách sử dụng.
Option 1
typedef int bool;
#define true 1
#define false 0
Option 2
typedef int bool;
enum { false, true };
Option 3
typedef enum { false, true } bool;
Dùng tiêu chuẩn C99 thì có vẻ nhanh gọn nhất.
Option 4 (C99)
#include
Để in ra giá trị biến bool bằng printf :
bool x = true;
printf("%d\n", x); // prints 1
Hoặc in ra kết quả bằng tenary operator.
printf(x ? "true" : "false");
Hoặc đẹp hơn.
printf("%s", x ? "true" : "false");
Hoặc đẹp hơn nữa.
fputs(x ? "true" : "false", stdout);