begin process at 2012 05 30 08:00:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

[C]Types qui se croisent ...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[C]Types qui se croisent ...

mercredi 17 janvier 2007 à 23:54:13 | [C]Types qui se croisent ...

LocalStone

Bonsoir à tous,
Je suis suis en train de coder un petit projet en C pour l'école et je suis face à un problème ... J'ai deux fichiers struct1.h et struct2.h qui ont besoins l'un de l'autre car les structures définies dans ces 2 fichiers ont besoin de l'autre pour exister. Du coup ... Je sais pas du tout comment faire ... J'arrive pas à compiler puisque lors d'un include, l'autre include n'a pas pu être fait et du coup la compilation ne peut se faire puisque le type n'est pas défini ...
Voilà ... Et du coup, je sais pas quoi faire ! Et j'ai beau chercher sur le net, j'ai pas trouvé de solutions. Donc si quelqu'un peu m'aider, ce serait vraiment sympa !
Merci beaucoup !
L.S.
jeudi 18 janvier 2007 à 08:32:40 | Re : [C]Types qui se croisent ...

vicenzo

Membre Club
Bonjour,

As tu réellement besoin de cette dépendance croisée ? Ne peux tu pas gérer un seul header ?

Sinon quel sont les types que tu déclares ?

Vicenzo
jeudi 18 janvier 2007 à 09:20:17 | Re : [C]Types qui se croisent ...

katsankat

Membre Club
Salut,
Mets le code commun dans un troisième header, lui-même inclus par les deux autres. Avec un
#ifdef tata
#define tata
#else
... le code
#endif
pour éviter le double inclusion
jeudi 18 janvier 2007 à 09:34:36 | Re : [C]Types qui se croisent ...

LocalStone

En fait, y a pas vraiment de code commun à proprement parlé. Et oui, je suis obligé d'avoir 2 headers différents.
J'ai ça en fait :

Struct1.h
#ifndef __Struct1__
#define __Struct1__

#include "Struct2.h"

typedef struct sStruct1 *tStruct1;
struct sStruct1
{
    ...
    tStruct2 ExempleOfStruct2;
    ...
};

#endif

Struct2.h
#ifndef __Struct2__
#define __Struct2__


#include "Struct2.h"

typedef struct sStruct2 *tStruct1;
struct sStruct2
{
    ...
    tStruct1 ExempleOfStruct1;
    ...
};

#endif


Voilà ... Et c'est un problème ...

LocalStone
jeudi 18 janvier 2007 à 09:36:12 | Re : [C]Types qui se croisent ...

LocalStone

Dans struct2.h, c'est #include "struct1.h" ... Faute de frappe
samedi 20 janvier 2007 à 21:53:20 | Re : [C]Types qui se croisent ...

acx01b

salut

il y a une 2ieme faut de frappe dans struct2.h:
typedef struct sStruct2 *tStruct2;
   et pas
typedef struct sStruct2 *tStruct1;
car sinon ce n'est pas une dépendance croisée

en C il faut faire

typedef struct a a;
typedef struct b b;
struct a {
   b *p;
};
struct b {
   a *p;
};

le typedef permet la dépendance croisée car le typedef c'est un peu comme déclarer la structure avant de la définir, en plus de servir aussi comme une forme de macro

en C++ la déclaration de class et de struct existe:

class a;
class b;
class a {
   b *p;
};
class b {
   a *p;
};

et ça permet donc de la même façon la dépendance croisée

a+

samedi 20 janvier 2007 à 21:55:56 | Re : [C]Types qui se croisent ...

acx01b

ha et je voulais rajouter que les    typedef type1* type2;   c'est mal car après on ne reconnait plus les pointeurs des autres variables



Cette discussion est classée dans : fichiers, include, types, coup, croisent


Répondre à ce message

Sujets en rapport avec ce message

Include "je_comprend_pas_grand_chose.h" [ par neodelphi ] Bonjour tout le monde... C'est la première fois que je post un message ici, arf g le trac lol Bon je viend de me mettre au C++ pour me prog un jeu en Descriptif des fichiers INCLUDE [ par manu ] Bonjour, je cherche qqun qui puisse me lister la liste des fichier h d'include et a quoi ils servent ?Tel que :// Fichiers à inclure#include // pour [C/C++] - déclarations de fichiers .h [ par smashcfr ] Hello j'essaie de me remettre au C (sur builder), et je commence simple, en faisant des progs console. Même si je fais un tout petit prog, je le fais aide include [ par Dalamar ] Je travaille sur un petit jeu et j,ai plusieurs fichiers .h. Je suis obligé d'en inclure plusieurs dans les autres fichiers, bref, chaque fichier dépe Besoin de fichiers "*.h" [ par AxeL364 ] Bonjour,J'ai besoin des fichiers suivants :#include #include #include #include #include #include #include <netdb.h Libjpeg [ par Mad X ] Bonjour, j'aimerai me servir de la librairie libjpeg avec visual studio 2003. J'ai voulu tester juste en rajoutant a un prog qui fonctionne les incl recuperer des données dans un fichiers. [ par volkukan ] Salut, je compile ce petit programme et tout fonctionne bien a part que j'ai un probleme de segmentation donc de pointeur. Y a til une ame généreuse c Précision sur les include [ par buno ] Salut les gens!J'aimerais avoir quelques petites précisions sur les fichiers que l'on inclus, notamment, j'aurais deux questions:- la première concern macro #include<> [ par boutonnet ] Bonjour tout le monde, je suis actuellement en stage, et je rencontre un problème horrible... j'ai le code suivant ::: //STL Library #include #inclu 65535 fichiers ouvert simultanément [ par _sebf ] Lu All, J'ai un soucis sur mon dev. J'ai besoin d'ouvrir 65535 fichiers simultanément sans les fermer. J'utilise le code suivant : #include #include


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,154 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales