Article View: fr.comp.lang.c
Article #15677Re: Syntaxe enum
From: David Noyelle
Date: Tue, 06 Sep 2005 09:08
Date: Tue, 06 Sep 2005 09:08
106 lines
4901 bytes
4901 bytes
Merci pour vos explications.
Je n'ai pas le choix concernant les codes de retour des fonctions [-1 ~ -14]
avec 0=SUCCESS, car j'utilise une API programmation embarquee pour un
serveur serie-ethernet.
En gros, je sais que quand le code de retour est
{-1, -2, -5, -6, -7, -9, -10, -12, -13, -14}, l'erreur vient d'un serveur
local, et quand le code de retour est {-3, -4, -8, -11}, l'erreur vient d'un
serveur distant.
Voila pourquoi je cherche une solution simple en utilisant enum
ERREUR_LOCALE, ERREUR_DISTANTE, et swicth case pour gerer le tout.
Je vais voire ce que je peux faire avec vos explications, ca devrait
fonctionner,
merci
David Noyelle
"Pierre Maurette" <mmaauurreetttteeppiieerrrree@wwaannaaddoooo.ffrr> wrote
in message news:mn.2cf37d598769d522.31483@laposte.net...
> David Noyelle, le 05/09/2005, a �crit :
>> Bonjour,
>>
>> je cherche la syntaxe pour mettre en place un enum avec des valeurs int
>> allant de '-1' a '-14'. Cette valeur est en fait le code de retour d'une
>> fonction, et ca me semble un peu long avec un switch...
> ? Justement, renvoyer un code d'erreur dans une enum est une bonne
> solution qui augmente la lisibilit� mais pas la compacit�. De plus,
> l'utilisation normale entra�ne pratiquement le switch .. case.
>
>
>> par ex:
>>
>> enum TYPE_ERREUR_1 {-1, -2, -3, -4, -5, -6, -7};
>> enum TYPE_ERREUR_2 {-1, -2, -3, -4, -5, -6, -7};
>> ................
>> int_retour = maFonction();
>>
>> switch(int_retour)
>> {
>> case TYPE_ERREUR_1:
>> ................
>> break;
>> case TYPE_ERREUR_2:
>> ................
>> break;
>> }
>>
>>
>> Merci d'avance pour vos suggestions,
> Vous semblez d�buter dans les enum, non ?
> Une enum est une fa�on de d�clarer facilement et d'utiliser de fa�on
> lisible des s�ries des constantes. Dans le cas g�n�ral (on oublie les cas
> particuliers, qui existent pourtant), on ne fera pas de calcul sur les
> enum, essentiellement des affectations et des comparaisons d'�galit�.
> Normalement, on ne doit pas avoir � conna�tre la valeur num�rique
> sous-jacente. Un exemple:
> enum type_erreur {
> NO_ERREUR /* = 0 */,
> ERREUR_POIVRE,
> ERREUR_CUISSON,
> ERREUR_FRIGO,
> ERREUR_HUILE
> };
> Par d�faut, les valeurs sont affect�es automatiquement, � partir de 0, en
> incr�mentant de 1 � chaque fois. On peut forcer n'importe quel champ de
> l'enum, �ventuellement tous. Si vous utilisez le fait que NO_ERREUR est
> �gal � 0, parce que vous pr�f�rez �crire if(erreur) plut�t que if(erreur
> != NO_ERREUR), alors pr�cisez-le, m�me si c'est redondant.
> Pour les autres valeurs, si vous utilisez des tests
> if(erreur == ERREUR_XXXX) ou un switch ... case, vous vous en fichez.
> Vous voulez rajouter un cas d'erreur, le sel. Vous modifiez l'enum:
> enum type_erreur {
> NO_ERREUR,
> ERREUR_POIVRE,
> ERREUR_SEL,
> ERREUR_CUISSON,
> ERREUR_FRIGO,
> ERREUR_HUILE
> };
> et vous ajoutez un bloc � votre switch ... case.
>
> [Dans les cas particulier, il y la possibilit� de renvoyer par exemple un
> code signifiant plusieurs cas, par exemple qu'il manque du sel et qu'il y
> a un probl�me de frigo]
>
> Il faut donc avoir de bonnes raisons pour imposer des valeurs num�riques �
> un enum. Peut-�tre votre id�e est-elle celle d'une fonction renvoyant un
> entier int que vous *savez* positif ou nul, et d'utiliser les valeurs
> n�gatives pour renvoyer un code d'erreur. Je ne suis pas s�r que ce soit
> une tr�s bonne id�e. J'ai eu fait ce genre de truc, aujourd'hui si mon
> code y gagnait beaucoup, je ferais une enum normale qui d�marre � 1, et je
> renverrai :
> return - (int)ERREUR_XXXX;
>
>
> --
> Pour r�pondre directement: enlever une lettre sur deux
> wwaannaaddoooo -> wanadoo
>
> Pierre Maurette
>
>
Technical Details
Message-ID:
<431d5c92$0$30712$626a14ce@news.free.fr>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!infeed-1.proxad.net!news2-e.free.fr!not-for-mailReferences:
<431c738f$0$11084$626a14ce@news.free.fr> <mn.2cf37d598769d522.31483@laposte.net>Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,4e37a5742151792c X-Google-Attributes: gidf9822,public X-Google-Language: FRENCH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!infeed-1.proxad.net!news2-e.free.fr!not-for-mail Reply-To: "David Noyelle" <widax@free.fr> From: "David Noyelle" <widax@free.fr> Newsgroups: fr.comp.lang.c References: <431c738f$0$11084$626a14ce@news.free.fr> <mn.2cf37d598769d522.31483@laposte.net> Subject: Re: Syntaxe enum Date: Tue, 6 Sep 2005 11:08:20 +0200 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-RFC2646: Format=Flowed; Response Lines: 108 Message-ID: <431d5c92$0$30712$626a14ce@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 06 Sep 2005 11:08:34 MEST NNTP-Posting-Host: 212.76.252.39 X-Trace: 1125997714 news2-e.free.fr 30712 212.76.252.39:2058 X-Complaints-To: abuse@proxad.net