typedef int bool;
#define false 0
#define true 1
chỉ hoạt động tốt. Các tiêu đề Windows cũng làm như vậy. Hoàn toàn không có lý do gì để băn khoăn về bộ nhớ "lãng phí" được chi tiêu bằng cách lưu trữ một giá trị hai bit trong một int
.
Như Alexandre đã đề cập trong nhận xét, trình biên dịch C của Microsoft (đi kèm với Visual Studio) doesn't support C99 và có khả năng sẽ không xảy ra. Thật không may, bởi vì stdbool.h
và nhiều tính năng khác hữu ích hơn nhiều được hỗ trợ trong C99, nhưng không phải trong Visual Studio. Nó bị mắc kẹt trong quá khứ, chỉ hỗ trợ chuẩn cũ hơn được gọi là C89. Tôi ngạc nhiên là bạn chưa gặp phải vấn đề khi cố định nghĩa các biến ở đâu đó khác với sự bắt đầu của một khối. Điều đó cắn tôi mỗi lần tôi viết mã C trong VS.
Một cách giải quyết khác là cấu hình Visual Studio để biên dịch mã dưới dạng C++. Sau đó, gần như mọi thứ bạn đã đọc trong sách C99 sẽ hoạt động mà không cần trình biên dịch nghẹt thở. Trong C++, loại bool
được tích hợp (mặc dù nó là loại 1 byte ở chế độ C++, chứ không phải loại 4 byte như trong chế độ C). Để thực hiện thay đổi này, bạn có thể chỉnh sửa cài đặt biên dịch của dự án trong IDE hoặc bạn có thể chỉ cần đổi tên tệp để có đuôi mở rộng cpp
(thay vì c
). VS sẽ tự động thiết lập chế độ biên dịch cho phù hợp.
Phiên bản hiện đại của Visual Studio (2013 trở lên) cung cấp hỗ trợ được cải thiện cho C99 nhưng vẫn chưa hoàn chỉnh. Thành thật mà nói, các giải pháp tốt hơn nếu bạn đang cố gắng để tìm hiểu C (và do đó C99 ngày nay) là chỉ cần chọn một trình biên dịch khác nhau. MinGW là một tùy chọn tốt nếu bạn đang chạy trên Windows. Rất nhiều người như Code::Blocks IDE
Nguồn
2011-12-18 01:24:16
'' là C99. Visual studio sẽ không bao giờ hỗ trợ nó. Tìm trình biên dịch khác. –
Rõ ràng thời tiết lạnh không có giới hạn (tức là nó có thể bị tuyết rơi trong thế giới ngầm), hỗ trợ C99 cuối cùng cũng bắt đầu với VS 2013, bao gồm cả stdbool.h. [http://blogs.msdn.com/b/vcblog/archive/2013/07/19/c99-library-support-in-visual-studio-2013.aspx] – John
@AlexandreC .: xin chào từ năm 2015!VS mới nhất có stdbool.h ngay bây giờ! * cười khúc khích * – Mints97