使用未声明的标识符'true'

时间:2012-11-10 14:04:23

标签: c compiler-errors

为什么我收到此错误:

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);
    }
}

4 个答案:

答案 0 :(得分:34)

默认情况下未声明标识符true。要使用它,有两种解决方案:

  1. 在C99中编译并包含<stdbool.h>
  2. 自己定义此标识符。
  3. 然而,无限循环for (;;)通常被认为是更好的风格。

答案 1 :(得分:16)

C没有内置布尔类型。所以它不知道true是什么。你必须以这种方式自己申报:

#define TRUE 1
#define FALSE 0

[...]
while (TRUE) {
     [...]
}

答案 2 :(得分:4)

包含stdbool.h以使用C99布尔值 如果你想坚持使用C89自己定义:

typedef enum
{
    true=1, false=0
}bool;

答案 3 :(得分:0)

由于没有在C语言中定义true和false值,所以出现了此错误。您可以通过在代码中添加几行简单代码来做到这一点,如下所示:

#define FALSE 0
#define TRUE 1 // Option 1
#define TRUE !FALSE // Option 2