Использование необъявленного идентификатора "true"
Почему я получаю эту ошибку:
infinite.c:5:12: error: use of undeclared identifier 'true'
while (true) {
1 error generated.
make: *** [infinite] Error 1
... когда я пытаюсь скомпилировать этот простой код для бесконечного цикла?
#include <stdio.h>
int main(void) {
int x = 0;
while (true) {
printf("%i\n", x);
}
}
Ответы
Ответ 1
Идентификатор true
не объявляется по умолчанию. Чтобы использовать его, два решения:
- Скомпилируйте на C99 и включите
<stdbool.h>
.
- Определите этот идентификатор самостоятельно.
Однако бесконечный цикл for (;;)
часто считается лучшим стилем.
Ответ 2
C не имеет встроенных булевых типов. Поэтому он не знает, что такое true
. Вы должны объявить это самостоятельно:
#define TRUE 1
#define FALSE 0
[...]
while (TRUE) {
[...]
}
Ответ 3
Включить stdbool.h для использования булевых C99.
Если вы хотите придерживаться C89, определите его сами:
typedef enum
{
true=1, false=0
}bool;
Ответ 4
Вы получаете эту ошибку, потому что вы не определили значения true и false в C. Вы можете сделать это, добавив несколько простых строк в ваш код следующим образом:
#define FALSE 0
#define TRUE 1 // Option 1
#define TRUE !FALSE // Option 2