Если ваш компилятор поддерживает, хотя бы частично, стандарт C99 (или C11, но это пока маловероятно), добавьте
#include <stdbool.h>
в начало исходного файла, чтобы сделать bool
, false
и true
видимый.
Если это не так (поддержка Microsoft для C99 не годится), обходной путь:
typedef enum { false, true } bool;
Это не вполне соответствует семантике типа C99 bool
(на самом деле _Bool
), но, вероятно, он достаточно близок.
Кстати, вам не нужен оператор if / else в вашей функции:
static bool is_ascii_value_of_digit(char ascii_value) {
return ascii_value >= '0' && ascii_value <= '9';
}
bool
значения являются значениями , и они могут быть сохранены и возвращены из функций, как и любые другие значения.
Еще один совет: не сравнивайте логические значенияна true
или false
, просто проверьте их напрямую.В условии (например, в операторе if
) любое ненулевое значение считается истинным, поэтому:
if (cond == true) ...
может завершиться ошибкой, если cond
имеет ненулевое значение, отличное от 1.Просто напишите:
if (cond) ...
или, чтобы проверить, ложно ли это:
if (!cond) ...
Рекомендуемое прочтение: раздел 9 comp.lang.c FAQ .(Дальнейшее рекомендуемое чтение: все остальные разделы.)