Accueil > Forum > > > > Problème d'Enum
Problème d'Enum
mercredi 27 décembre 2006 à 17:40:34 |
Problème d'Enum

BaptX
|
Bonsoir à tous, Voilà j'ai un petit problème. J'ai fais un couple .c/.h de fonctions génériques que je vais sans doute réutiliser dans plusieurs programmes. Néanmoins, ces fonctions retournent un type enum que j'ai crée qui s'appelle enCodeRetour (qui me permet de détecter le type d'erreur que me donne ma fonction). Néanmoins, je vais réutiliser cet enum dans mon programme et donc fatalement je vais ajouter des codes erreur qui ne sont pas définis à l'avance. Donc mon enum est définie dans mon programme, et non pas dans le couple .h. J'aurai voulu savoir si il y avait une solution pour éviter d'inclure le typedef enum dans mon .h sans qu'il me fasse une erreur du type 'type non définie' ou 'type déclaré deux fois'. Ci-dessous un exemple, pour que vous compreniez mieux : fichier1.h #include "fichier2.h" typedef enum enCodeRetour { OK, } enCodeRetour; fichier2.h enCodeRetour function1(); enCodeRetour function2(); fichier1.c intègre mon programme est l'appel à mes fonctions de fichier2.h fichier2.c est inclu dans mon projet ------------------------------- En gros, pour utiliser les fonctions du fichier2.h, le compilateur me dit qu'il faut que je définisse mon enum enCodeRetour (donc dans fichier2.h). Mais le problème est que mon enum est définie dans fichier1.h et que si je le définie deux fois, le compilateur va gueuler. Mais si je le définie dans fichier2.h, je ne pourrai pas ajouer de valeurs dans fichier1.h (si j'ai bien compris). Et dans l'absolu je ne sais pas les codes erreurs que je rajouterai, donc je ne peux les définir à l'avance. Il y aurai bien la possibilité de créer deux enum, mais après ça serait le bazar par rapport à mon switch case qui gère les erreurs. Quelqu'un aurait-il une solution ? Existe-il une solution pour que deux enum soient compatible entre eux ? Est-il possible de faire passer mon enum de fichier1.h dans fichier2.h ?
|
|
mercredi 27 décembre 2006 à 17:50:31 |
Re : Problème d'Enum

pepsidrinker
|
Je ne suis pas sur d'avoir tout bien compris, mais si je peut me permettre, tu n'a pas a redefinir l'enum 2 fois. Une fois l'enum defini dans ton .h, ne fais que inclure ce ".h" dans lekelle lenum est definit et tu pourra lutiliser. Pepsidrinker
exemple : (ficher1.h): enum Rien {BOB,GEORGE};
( fichier1.cpp) #include "fichier1.h" int main() { Rien monEnum; nomEnum = BOB; }
voila, jespere t'avoir aider.
|
|
mercredi 27 décembre 2006 à 18:01:24 |
Re : Problème d'Enum

BaptX
|
Mon problème est que je fais appel à des fonctions qui ne sont pas dans fichier1.cpp mais dans fichier2.cpp. Or, pour suivre ton exemple, c'est comme si j'avais: fichier2.cpp
Rien haha (int hoho) { // mon programme return haha; }
fichier2.h
Rien haha (int hoho);
Le problème est que j'inclue mon couple fichier2 dans fichier1 mais que l'enum est créé dans fichier1. Et donc du coup le compilateur me sort une erreur comme quoi l'enum est pas créé. Exactement il dit: [C++ Erreur] generik.h(17): E2238 Déclaration multiple pour 'enCodeRetour' [C++ Erreur] generik.h(15): E2344 Déclaration plus récente de 'enCodeRetour'
|
|
mercredi 27 décembre 2006 à 18:05:27 |
Re : Problème d'Enum

BaptX
|
Voici mes sources exactes, ca vous parlera ptète mieux: fichier1.h
#include <Dialogs.hpp> #include <stdio.h> #include <string.h> #include <time.h> #include <dir.h> #include "C:\Documents and Settings\ABM\Bureau\Baptiste\Convertisseur\Fonctions génériques\generik.h" #define MAX_SIZE 200 //--------------------------------------------------------------------------- typedef enum enCodeRetour { OK, ER_fopen, ER_copyfile, ER_genopenf, ER_cliopenf, ER_samelib, ER_noequal, ER_nolib, ER_char, ER_nogui, ER_nullstruct, ER_nbarg, ER_modif, ER_choix, ER_write, ER_genempty, ER_cliempty, ER_client, ER_gen13, ER_genchar, } enCodeRetour;
fichier generik.h
//--------------------------------------------------------------------------- #ifndef generikH #define generikH //--------------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dir.h> #include <time.h> #include <conio.h> #define MAX_SIZE 200 //--------------------------------------------------------------------------- // enum struct //--------------------------------------------------------------------------- enCodeRetour enCrCopyfile (unsigned char *aucSource, unsigned char *aucDest, unsigned char *aucErreur); enCodeRetour enCrangefiles (unsigned char *aucPath, unsigned char *aucName, unsigned char *aucExt, unsigned char *aucErreur); enCodeRetour enCrIngecrypt (unsigned char *aucPathExe, unsigned char *aucPath, unsigned char *aucName, unsigned char *aucExt); //--------------------------------------------------------------------------- #endif
|
|
mercredi 27 décembre 2006 à 18:07:11 |
Re : Problème d'Enum

pepsidrinker
|
envois la source des ton prog au complet svp Pepsidrinker
|
|
mercredi 27 décembre 2006 à 18:56:00 |
Re : Problème d'Enum

MuPuF
|
hello, laisse tomber les enums, retourne un int. Et pour que ce soit facile à utiliser, met des defines dans ton programme, comme ça, c'est générique et adaptable, jamais compris l'interet des énums de toute facon ... /* MuPuF®
|
|
mercredi 27 décembre 2006 à 19:41:58 |
Re : Problème d'Enum

yann_lo_san
|
Il faut simplement que tu mettes l'enum dans generic.h au lieu de fichier 1. tu l'auras aussi puisque tu fais l'inclusion à ralonge (generic.h) dans fichier1
De plus fichier 1 n'est pas encadré de #ifndef ect...
On peut voir les enum comme des : static const int OK = 0; static const int ERR1 = 1; static const int ERR2 = 2;
|
|
mercredi 27 décembre 2006 à 19:44:06 |
Re : Problème d'Enum

yann_lo_san
|
Pour mupuf : une enum est plutot encapsulée dans une struct, ou elle sera vu comme un type intégrée a la struct, impossible à faire avec des #define.
|
|
jeudi 28 décembre 2006 à 09:41:17 |
Re : Problème d'Enum

BaptX
|
Réponse acceptée !
En fait mon problème c'était que je ne voulais pas toucher à fichier2.h et comme mon enum pouvait changer en fonction du programme que je faisais (en fonction du programme, il n'y a pas le même nombre d'erreurs), la solution la plus simple est de faire mon enum dans un troisième fichier .h inclue dans fichier2.h. En effet, je ne peux pas créer mon enum dans fichier1.h car fichier2.h est appelé avant et ça crée un problème au niveau des entêtes de fonctions ET je ne veux pas modifier fichier2.h à chaque fois que je fais un nouveau programme. La seule solution consiste donc à ajouter un troisième .h en l'appelant dans le deuxième.
|
|
Cette discussion est classée dans : type, enum, définie, fichier2, encoderetour
Répondre à ce message
Sujets en rapport avec ce message
Comment récupérer une valeur définie par __int64 ? [ par Weedy_59 ]
Voici mon problème, je voulais acquérir la taille d'un fichier de + 4Go donc j'ai demandé une aide car a cause du type 'unsigned long' j'étais limité
sérialisation d'un bool ou un type enum [ par iznogoud ]
Bonjour,J'ai un petit problème lorsque j'utilise ma fonction serialize. Je suis incapble de rentrer des types bool ou des types que j'ai créer. Je sai
Nombre aléatoire de type Double [ par BRAUKRIS ]
Impossible de génère un nombre aléatoire à virgule.J?ai utilisé la fonction rand mais elle me renvoie toujours un nombre entier.Comment doit-je faire
Type de fenêtre + Gestion des touches + Réduction de la fenêtre [ par CyberP ]
1.Lorsque l'on créé un élément pour son programme, comme une barre de status ou une zone de texte éditable, on utilise une fonction avec le type d'élé
Récupération de varaiables dans un fichier txt [ par jujunio ]
Mon pb est le suivant :Je n'arrive pas à récupérer les valeurs de variables déclarées dans un fichier txt.voici le fichier .txt dont je veux récupérer
récupération de variables dans un fichier .txt [ par jujunio ]
Voici mon pb. Je voudrais récupérer des valeurs de variables qui sont dans un fichier .txt et je ne sais pas du tout comment faire?voici le fichier .t
template [ par dam1234 ]
G un probleme avec une methode de classe declaree en template. J'aurai besoin de savoir comment est ce que l'on fait pour connaitre quel a été le type
Gestion d'accès par carte à puce [ par Midikits ]
Bonjour à tous!J'ais un projet de gestion d'accès par carte à puce à developper avec une base de données sous access et un programme en c++ pour faire
type de donnée inconnu [ par jeffise57 ]
dans une fonction developper par une autre personne j'ai un type char** trucmuche, cette variable est un buffer qui doit recevoir le résultat qu'est c
aidez moi svp [ par asnow ]
Q'un aurait-il la gentillesse de me traduire ce code, en algorithme. merci d'avance.int i=0;int x=random(10);int y=random(10);int type_pos=random(2);i
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|