Pourquoi ai-je cette erreur:
infinite.c:5:12: error: use of undeclared identifier 'true'
while (true) {
1 error generated.
make: *** [infinite] Error 1
... quand j'essaye de compiler ce code simple pour une boucle infinie?
#include <stdio.h>
int main(void) {
int x = 0;
while (true) {
printf("%i\n", x);
}
}
L'identifiant true
n'est pas déclaré par défaut. Pour l'utiliser, deux solutions:
<stdbool.h>
.Cependant, la boucle infinie for (;;)
est souvent considérée comme un meilleur style.
C n'a pas de types booléens intégrés. Il ne sait donc pas ce qu'est true
. Vous devez le déclarer vous-même de cette manière:
#define TRUE 1
#define FALSE 0
[...]
while (TRUE) {
[...]
}
Incluez stdbool.h pour utiliser les booléens C99.
Si vous voulez vous en tenir à C89, définissez-le vous-même:
typedef enum
{
true=1, false=0
}bool;
Vous obtenez cette erreur car vous n'avez pas défini les valeurs true et false en C. Vous pouvez le faire en ajoutant quelques lignes simples à votre code comme suit:
#define FALSE 0
#define TRUE 1 // Option 1
#define TRUE !FALSE // Option 2