[code C] dereferencing pointer to incomplete

Résolu
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.

2 réponses

  1. 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?
    1. 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;
        }