[code C] dereferencing pointer to incomplete

Résolu/Fermé
Utilisateur anonyme - 26 mars 2011 à 18:24
 Utilisateur anonyme - 27 mars 2011 à 00:04
Salut, je suis en train de faire un projet que je dois rendre lundi matin et j'ai une erreur à la compilation que je ne comprends absolument pas.

Le compilateur (gcc) me dit "dereferencing pointer to incomplete type" à toutes le lignes qui contiennent un disc->
Voici le code:


/////////disque.c///////////

typedef struct cd {
char *artiste;
char *album;
int annee;
int nb_chansons;
char *genre;
T_LIST pistes;
} cd;


///////////////disque.h///////////////
typedef struct cd *disque;


/////////////fonct_aux.c////////////
void aff_disc_sans (disque disc) {

printf("\n------------------------------------\n");
printf("Artiste : %s\n", disc->artiste);
printf("Année de parution : %d\n", disc->annee);
printf("Album : %s\n", disc->album);
printf("------------------------------------\n");

}


Je ne vous mets pas le reste du code qui n'apporterait rien à mon avis.
T_LIST est une structure fournit par mes profs donc il n'y a aucun doute la concernant.

Merci d'avance.
A voir également:

2 réponses

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
26 mars 2011 à 19:05
Bonjour
void aff_disc_sans (disque disc) {
ça ne devrait pas plutôt être :
void aff_disc_sans (disque *disc) {
?
j'ai testé comme ça :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
    char *x;
}plop;

void ko(plop *a)
  {
    printf("%s\n",a->x);
  }

int main(void)
  {
    plop *test;//test est un pointeur
    test=malloc(sizeof(plop));// on le fait pointer quelque part au cas où
    test->x=malloc(sizeof(char)*20);//pareil avec x
    strcpy(test->x,"hello world!");//copie dans x
    ko(test);//affichage
    free(test->x);
    free(test);
    return 0;
  }


sans quoi ça reviendrait à faire ça :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
    char *x;
}plop;

void ko(plop a)
  {
    printf("%s\n",a.x);
  }

int main(void)
  {
    plop test;
    test.x=malloc(sizeof(char)*20);
    strcpy(test.x,"hello world!");
    ko(test);
    free(test.x);
    return 0;
  }
0
Utilisateur anonyme
27 mars 2011 à 00:04
oui mais quand je défini disque, je le défini comme un pointeur vers un cd, donc ca revient au même au final non?
0