Pointeur : incomplet non autorisé
truite
-
wytekrow Messages postés 8 Statut Membre -
wytekrow Messages postés 8 Statut Membre -
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
- Il est en cours de transport vers votre site de livraison ✓ - Forum Consommation & Internet
- Www.youtube.com n'autorise pas la connexion ✓ - Forum HTML
- Votre correspondant n'est pas autorisé à recevoir vos appels - Forum Mobile
- Pointeur souris - Guide
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;
}