37

このエラーが発生する理由:

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

4 に答える 4

53

識別子trueはデフォルトでは宣言されていません。それを使用するには、2 つのソリューション:

  1. C99 でコンパイルし、<stdbool.h>.
  2. この識別子は自分で定義してください。

ただし、無限ループのfor (;;)方が優れたスタイルと見なされることがよくあります。

于 2012-11-10T14:39:22.267 に答える
26

C には組み込みのブール型はありません。だから、それが何であるかを知りませんtrue。次のように自分で宣言する必要があります。

#define TRUE 1
#define FALSE 0

[...]
while (TRUE) {
     [...]
}
于 2012-11-10T14:05:16.970 に答える
4

C99 ブール値を使用するには、stdbool.h を含めます。
C89 に固執したい場合は、自分で定義します。

typedef enum
{
    true=1, false=0
}bool;
于 2012-11-10T14:09:00.300 に答える