Accueil > Forum > > > > [C]Types qui se croisent ...
[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
|
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
|
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|