Pointeur : incomplet non autorisé
truite
-
wytekrow Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
wytekrow Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai le code suivant:
j'ai l'erreur suivante:
- ligne 15
- ligne 25
- ligne 26
où il est écrit "point".
J'ai beau chercher, je ne vois pas d'où pourrait venir l'erreur.
Auriez-vous une explication ?
Merci
#include <stdio.h> void main(){ printf("bonjour"); typedef struct Coordonnees Coordonnees; struct Coordonnees { int x; int y; }; Coordonnees point = { 0,0 }; Coordonnees *pointP = NULL; printf("\n\n\n"); } typedef struct Coordonnees Coordonnees; void initCoord(Coordonnees* point) { point->x = 0; point->y = 0; }
j'ai l'erreur suivante:
type incomplet non autoriséà 3 endroits différents:
- ligne 15
- ligne 25
- ligne 26
où il est écrit "point".
J'ai beau chercher, je ne vois pas d'où pourrait venir l'erreur.
Auriez-vous une explication ?
Merci
Configuration: Windows / Firefox 85.0
A voir également:
- Le pointeur vers le type classe incomplète n'est pas autorisé
- Site inaccessible n'autorise pas la connexion - Guide
- Voe.sx n'autorise pas la connexion - Forum Google Chrome
- Votre correspondant n'est pas autorisé à recevoir vos appels - Forum Mobile
- 127.0.0.1 N'autorise pas la connexion - Forum Jeux PC
- Doodstream.com n'autorise pas la connexion. ✓ - Forum Mozilla Firefox
2 réponses
Bonsoir ,
Erreur déclaration structure
Erreur déclaration structure
typedef struct inscrit Inscrit; struct Inscrit { int numMatriJ1; int numMatriJ2; int catégorie; Inscrit *pSuiv; };
Hello,
voici les erreurs :
Au début, la structure et le typedf sont reconnus. Il n'y a que des warnings sur des variables non utilisées.
Le problème vient du fait que la déclaration de la structure ainsi que le typedef sont fait à l'intérieur de la fonction main ! du coup leur visibilité est limité à cette fonction.
Avant la définition de la fonction initCoord, tu fais un typedef sur une struct qui n'existe pas à cet endroit. Tu peux en faire un pointeur, mais tu ne pourras pas le déréférencer.
De plus le prototype de main est :
voici les erreurs :
gcc -Wall -Wextra -c str2.c str2.c:4:6: warning: return type of ‘main’ is not ‘int’ [-Wmain] void main(){ ^~~~ str2.c: In function ‘main’: str2.c:17:15: warning: unused variable ‘pointP’ [-Wunused-variable] Coordonnees *pointP = NULL; ^~~~~~ str2.c:15:14: warning: unused variable ‘point’ [-Wunused-variable] Coordonnees point = { 0,0 }; ^~~~~ str2.c: In function ‘initCoord’: str2.c:25:7: error: dereferencing pointer to incomplete type ‘Coordonnees’ {aka ‘struct Coordonnees’} point->x = 0; ^~
Au début, la structure et le typedf sont reconnus. Il n'y a que des warnings sur des variables non utilisées.
Le problème vient du fait que la déclaration de la structure ainsi que le typedef sont fait à l'intérieur de la fonction main ! du coup leur visibilité est limité à cette fonction.
Avant la définition de la fonction initCoord, tu fais un typedef sur une struct qui n'existe pas à cet endroit. Tu peux en faire un pointeur, mais tu ne pourras pas le déréférencer.
De plus le prototype de main est :
int main(void) { .... return 0; }