Подтвердить что ты не робот

Использование необъявленного идентификатора "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);
    }
}
4b9b3361

Ответ 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