typedef int bool;
#define false 0
#define true 1
работает просто отлично. Заголовки Windows делают то же самое. Нет абсолютно никаких причин беспокоиться о «потраченной впустую» памяти, храня двухбитное значение в int
.
Как отметил Александр в комментарии, компилятор C Microsoft (в комплекте с Visual Studio) не поддерживает C99 и, вероятно, не собирается. К сожалению, stdbool.h
и многие другие гораздо более полезные функции поддерживаются в C99, но не в Visual Studio. Он застрял в прошлом, поддерживая только более старый стандарт, известный как C89. Я удивлен, что вы не столкнулись с проблемой, пытаясь определить переменные где-то, кроме начала блока. Это кусает меня каждый раз, когда я пишу код C в VS.
Один из возможных обходных путей - настроить Visual Studio для компиляции кода на C ++. Тогда почти все, что вы прочитали в книге C99, будет работать без удушья компилятором. В C ++ встроен тип bool
(хотя он является 1-байтовым типом в режиме C ++, а не 4-байтовым типом, как в режиме C). Чтобы внести это изменение, вы можете отредактировать параметры компиляции вашего проекта в среде IDE или просто переименовать файл с расширением cpp
(вместо c
). VS автоматически установит режим компиляции соответственно.
Современные версии Visual Studio (2013 и более поздние версии) предлагают улучшенную поддержку C99, но она еще не завершена. Честно говоря, лучшее решение, если вы пытаетесь изучить C (и, следовательно, C99 в настоящее время), это просто выбрать другой компилятор. MinGW - хороший вариант, если вы работаете в Windows. Многим нравится код :: блоки IDE