Je reçois "nom de type inconnu 'uint8_t'" et d'autres personnes du même type utilisant C dans MinGW. Des idées pour résoudre ça?
Essayez d'inclure stdint.h
ou inttypes.h
.
Utiliser uint8_t
type alias, vous devez inclure stdint.h
en-tête standard.
EDIT:
Pour être clair: Si l'ordre de votre #include
Est important et qu'il ne fait pas partie de votre motif de conception (lisez: vous ne savez pas pourquoi), vous devez repenser votre conception. Très probablement, cela signifie simplement que vous devez ajouter le #include
Au fichier d’en-tête posant problème.
À ce stade, j’ai peu d’intérêt à discuter/défendre les mérites de l’exemple, mais je vais le laisser, car il illustre certaines nuances dans le processus de compilation et la raison pour laquelle elles entraînent des erreurs.
END EDIT
Vous devez #include
Le stdint.h
AVANT #include
Toute autre interface de bibliothèque qui en a besoin.
Exemple:
Ma bibliothèque LCD utilise les types uint8_t. J'ai écrit ma bibliothèque avec une interface (Display.h
) Et une implémentation (Display.c
)
Dans display.c, j'ai les inclus suivants.
#include <stdint.h>
#include <string.h>
#include <avr/io.h>
#include <Display.h>
#include <GlobalTime.h>
Et ça marche.
Cependant, si je les réorganise comme suit:
#include <string.h>
#include <avr/io.h>
#include <Display.h>
#include <GlobalTime.h>
#include <stdint.h>
Je reçois l'erreur que vous décrivez. En effet, Display.h
A besoin d'éléments de stdint.h
, Mais ne peut y accéder car ces informations sont compilées APRÈS que Display.h soit compilé.
Alors déplacez stdint.h
Au-dessus de toute bibliothèque qui en a besoin et vous ne devriez plus avoir l'erreur.