Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmation modulaire et structures

Sujet résolu
12 mai 2012 à 23:16:19

Hello,

J'ai un petit soucis pour associer la programmation modulaire et des structures/énumerations.
Je vous explique la disposition de mes fichiers :
- main.c
-> main.h
- gestion_cartes.c
-> gestion_cartes.h
- liste_chainee.c
-> liste_chainee.h
- stats_combinaisons.c
-> stats_combinaisons.h

Ensuite, mes trois fichiers .c et .h (main exclu) utilisent une structure et une énumération que j'ai crée et placé dans gestion_cartes.h. J'inclue donc ce fichier dans les deux autres. Or, à la compilation, cela me dit que le type t_carte (une structure) n'est pas déclaré.

Auriez-vous une idée ?
Merci d'avance :p
  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2012 à 23:29:56

Bah on ne peut rien t'apprendre ^^
Tu penses avoir bien tout fait mais en fait non, donc t'as du oublier un truc etc.
A cet endroit ta structure n'est pas connu c'est tout.

Faudrait que tu en montres plus m'enfin.
  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2012 à 23:36:04

Si tu as pas fait de typedef, il faut mettre struct devant son nom pour l'utiliser. Mais bon, sans code, en effet, c'est un peu comme demander un aveugle ce qui ne va pas dans le rangement de ta bibliothèque : p.
  • Partager sur Facebook
  • Partager sur Twitter
Small is Beautiful — E.F. Schumacher | Blog (fr)
13 mai 2012 à 0:00:17

En faîtes j'ai trouvé le soucis.
Mon fichier gestion_cartes.h a besoin de liste_chainee.h (pour une fonction) tandis que liste_chainee.h a lui même besoin de gestion_cartes.h (pour la structure).

Du coup, j'ai mis dans mon fichier gestion.h :
/* STRUCTURES ET ENUMERATIONS */
typedef enum e_couleur
{
    CARREAU,
    TREFLE,
    COEUR,
    PIQUE
} t_couleur;

typedef struct s_carte
{
    int hauteur;
    t_couleur couleur;
    s_carte *suiv;
} t_carte;

#include "liste_chainee.h"


Mais bon, mettre un #include à cet endroit, c'est pas top non ?

Edit : Si, si, les typedef y sont ^^ Et j'espère que le bout de code fourni vous aidera à comprendre la situation.
  • Partager sur Facebook
  • Partager sur Twitter
13 mai 2012 à 0:08:59

Y avait fort à parier que ce soit un problème d'inclusions multiples, en effet x).
  • Partager sur Facebook
  • Partager sur Twitter
Small is Beautiful — E.F. Schumacher | Blog (fr)
13 mai 2012 à 0:25:43

Met tous tes #includes en début de fichier (tous!) et faut tous les protéger (car ça se fait pas automatiquement).
Ensuite si tu rencontres un soucis de multiples inclusions alors faut faire comme ici (ça doit probablement être expliquer quelque part dans un tuto m'enfin..).
  • Partager sur Facebook
  • Partager sur Twitter
13 mai 2012 à 1:16:42

Si, par protéger, tu entends faire les "ifndef" etc, c'est fait.

Bon finalement j'ai fusionné les deux fichiers, c'est plus simple ainsi ^^

Merci de votre aide et bonne soirée !
  • Partager sur Facebook
  • Partager sur Twitter
2 novembre 2019 à 11:02:38

Je rencontre le même problème aidez moi

-
Edité par Yoan Stephane 2 novembre 2019 à 11:03:10

  • Partager sur Facebook
  • Partager sur Twitter

Another Plys

2 novembre 2019 à 12:29:00

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)