🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #15677

Re: Syntaxe enum

#15677
From: David Noyelle
Date: Tue, 06 Sep 2005 09:08
106 lines
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-mail
References: <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