Même structure dans plusieurs fichiers en C
Résolu/Fermé
A voir également:
- Même structure dans plusieurs fichiers en C
- Renommer plusieurs fichiers en même temps - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
- Logiciel calcul structure bois gratuit - Télécharger - Architecture & Déco
1 réponse
tatou_38
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
121
30 avril 2009 à 23:04
30 avril 2009 à 23:04
struct s_point { float abscisse; float ordonnee;};
Cette ligne déclare la structure s_point. Comme tu le mets dans ton fichier .h, l'objet s_point va être déclaré dans tous les sources .c qui incluent ton fichier .h. D'où un problème à l'édition des liens qui trouve plusieurs objets de même nom !!!
Dans un fichier .h, tu définit des types de données,
Sans un source .c tu déclare des objets
Si tu as besoin de te référer à un même objet dans plusieurs sources .c, alors il faut le déclarer dans un seul de ces sources, et en extern dans les autres. Avec des #define tu peux t'arranger pour mettre la déclaration de l'objet dans ton fichier .h :
typedef struct {
float abscisse;
float ordonnee;
} tPoint;
#ifdef FICHIER_PRINCIPAL
typedef tPoint points;
#else
extern typedef tPoint points;
#else
Cette ligne déclare la structure s_point. Comme tu le mets dans ton fichier .h, l'objet s_point va être déclaré dans tous les sources .c qui incluent ton fichier .h. D'où un problème à l'édition des liens qui trouve plusieurs objets de même nom !!!
Dans un fichier .h, tu définit des types de données,
Sans un source .c tu déclare des objets
Si tu as besoin de te référer à un même objet dans plusieurs sources .c, alors il faut le déclarer dans un seul de ces sources, et en extern dans les autres. Avec des #define tu peux t'arranger pour mettre la déclaration de l'objet dans ton fichier .h :
typedef struct {
float abscisse;
float ordonnee;
} tPoint;
#ifdef FICHIER_PRINCIPAL
typedef tPoint points;
#else
extern typedef tPoint points;
#else
1 mai 2009 à 11:09
extern struct s_point { float abscisse; float ordonnee;};
typedef struct s_point points;
mais j avais le message suivant :
balayage.h:2: warning: useless keyword or type name in empty declaration
Finalement en écrivant simplement ce que tu m as dit, à savoir :
typedef struct {
float abscisse;
float ordonnee;
} points;
plus de message de warning, je crois que c est parce que ma définition était redondante, c est ca?