🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: macro "subtile"

#15534
From: Patrick 'Zener' Brunet
Date: Sun, 18 Sep 2005 11:55
69 lines
2775 bytes
Bonjour.

Je r�ponds � Pierre Habouzit <madcoder@debian.org>
qui dans 432d47bb$0$26362$626a14ce@news.free.fr a �crit :
> J'ai un tas de fonctions de parsing qui renvoient des ints.
>
> les valeurs n�gatives de ces ints signifient `erreur' et les valeurs
> positives ont une s�mantique selon les fonctions.
>
> j'ai donc souvent (� l'int�rieur de fonctions de parse) � �crire des
> trucs du genre :
>
>     int parse_result;
>
>     parse_result = ma_fonction_de_parse(ses_args);
>     if (parse_result < 0) {
>         return parse_result; /* faire remonter l'erreur */
>     }
>     /* ... utilise �ventuellement parse_result */
>
>
> ce qui � la longue rend les fonctions de parse un peu p�nibles � lire.
>
> J'aurais donc aim� faire une macro (appelons la TRANSMIT_PARSE_ERROR)
> qui :
>  * soit fasse un return si le r�sultat est n�gatif
>  * soit prenne la valeur du r�sultat sinon
> pour pouvoir faire par exemple :
>
>     int parse_result;
>
>     switch (TRANSMIT_PARSE_ERROR(parse_result,
>             ma_fonction_de_parse(ses_args))
>     {
>     /* ... */
>     }
>

Je crains fort qu'un return et la composition d'une r-value ne soient pas
compatibles syntaxiquement.

Par contre vous pouvez tr�s bien avoir des "case value" tous positifs et
traiter les cas d'erreur dans le "default".

Dans ce cas �a s'�crirait :

int parse_value;

switch( parse_value = parse( ses_args))
{
    case VALUE_1:
       break;
    case VALUE_N:
       break;
    default:
       if( parse_result < 0)
           return( parse_result);
       /* else "Erreur pas impl�ment�" */
}

Donc avec un code sans artifices...

Cordialement,

--
/***************************************\
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
\***************************************/
Technical Details
Message-ID: <432d55a7$0$14823$626a14ce@news.free.fr>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!infeed-3.proxad.net!news18-e.free.fr!not-for-mail
References: <432d47bb$0$26362$626a14ce@news.free.fr>

Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,3560d64a4d94fc2b
X-Google-Attributes: gidf9822,public
X-Google-Language: FRENCH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!infeed-3.proxad.net!news18-e.free.fr!not-for-mail
From: "Patrick 'Zener' Brunet" <use.link.in.signature@ddress.invalid>
Newsgroups: fr.comp.lang.c
References: <432d47bb$0$26362$626a14ce@news.free.fr>
Subject: Re: macro "subtile"
Date: Sun, 18 Sep 2005 13:55:22 +0200
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Lines: 71
Message-ID: <432d55a7$0$14823$626a14ce@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 18 Sep 2005 13:55:20 MEST
NNTP-Posting-Host: 84.6.250.131
X-Trace: 1127044520 news18-e.free.fr 14823 84.6.250.131:33269
X-Complaints-To: abuse@proxad.net