为什么我收到此错误:
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);
}
}
答案 0 :(得分:34)
默认情况下未声明标识符true
。要使用它,有两种解决方案:
<stdbool.h>
。然而,无限循环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