Article View: fr.comp.lang.c
Article #15534Re: macro "subtile"
From: Patrick 'Zener' Brunet
Date: Sun, 18 Sep 2005 11:55
Date: Sun, 18 Sep 2005 11:55
69 lines
2775 bytes
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-mailReferences:
<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