Где stdbool.h?

Бросьте взгляд на gpw инструмент . Пакет также доступен в репозиториях Debian/Ubuntu.

22
задан James Morris 1 November 2009 в 10:59
поделиться

5 ответов

_Bool - это встроенный тип, поэтому не ожидайте найти его определение в заголовочном файле, даже в системном заголовочном файле.

Сказав это, угадывая вашу систему по поисковым путям, смотрели ли вы в / usr / lib / gcc / * / * / include ?

Мой "настоящий" stdbool.h живет здесь. Как и ожидалось, #define s bool должно быть _Bool . Поскольку _Bool является собственным типом компилятора, для него нет определения в заголовочном файле.

13
ответ дан 29 November 2019 в 05:24
поделиться

В качестве примечания:

_Bool определен в C99. Если вы создаете свою программу с помощью:

gcc -std=c99

, вы можете ожидать, что она будет там.

7
ответ дан 29 November 2019 в 05:24
поделиться

Другие люди ответили на вопрос о местоположении _Bool и выяснили, объявлен ли C99. .. однако я не удовлетворен заявлением всех, сделанным самими собой.

Почему вы не можете полностью определить тип?

typedef enum { false, true } bool;
4
ответ дан 29 November 2019 в 05:24
поделиться
$ echo '_Bool a;' | gcc -c -x c -
$ echo $?
0

$ echo 'bool a;' | gcc -x c -c -
<stdin>:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘a’

Это демонстрирует, что _Bool является встроенным типом, а bool - нет, путем компиляции объявления одной переменной без включения.

0
ответ дан 29 November 2019 в 05:24
поделиться

_Bool - это предопределенный тип в C99, очень похожий на int или double . Вы также не найдете определения для int ни в одном заголовочном файле.

Вы можете сделать

  • проверить, что компилятор - C99
  • , если он использует _Bool
  • в противном случае используйте другой тип ( int или unsigned char )

Например:

#if defined __STDC__ && defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
/* have a C99 compiler */
typedef _Bool boolean;
#else
/* do not have a C99 compiler */
typedef unsigned char boolean;
#endif
2
ответ дан 29 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: