[linux-l] do{ . } while (0) (was: Arrays in C)

Jan-Benedict Glaw jbglaw at lug-owl.de
Sa Nov 26 10:54:30 CET 2005


On Fri, 2005-11-25 23:02:34 +0100, Steffen Dettmer <steffen at dett.de> wrote:
> * Jan-Benedict Glaw wrote on Fri, Nov 25, 2005 at 19:24 +0100:
> > Erm, wozu das "else" gehört ist ganz klar definiert: zum letzten "if"
> > davor. Eingerückt ist das:
> > 
> > if (c)
> > 	if (c2)
> > 		a;
> > 	else
> > 		b;
> > 
> > ISO/IEC 9899:1999(E), 6.8.4.1.3:
> > 	An *else* is associated with the lexically nearest preceding
> > 	*if* that is allowed by the syntax.
> 
> Das ist "C99", ja? Ist das hier neu?

Ja.

Nein. Auch ANSI-C90 enthält das schon. Aus dem Roman von
Kernighan/Ritchie, "Programmieren in C", 3-446-15497-3 bzw.
0-13-110330-X:
------------------------------------------------------------------------
3 Kontrollstrukturen
3.2 /if/-/else/
[...]
Da der *else*-Teil einer *if*-*else*-Anweisung optional ist, entsteht
eine Mehrdeutigkeit, wenn ein *else*-Teil in einer verschachtelten
Folge von *if*-Anweisungen fehlt. Dem wird dadurch begegnet, daß der
*else*-Teil immer mit dem letzten *if* verbunden wird, für das noch
kein *else*-Teil existiert
[...]
------------------------------------------------------------------------

Mein Vorgänger-Buch (C89) hab' ich leider ad hoc nicht gefunden, aber
ich bin mir doch recht sicher, daß ein *else* schon immer zum letzten
*if* gehört hat.

MfG, JBG

-- 
Jan-Benedict Glaw       jbglaw at lug-owl.de    . +49-172-7608481             _ O _
"Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg  _ _ O
 für einen Freien Staat voll Freier Bürger"  | im Internet! |   im Irak!   O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20051126/e9cb6f90/attachment.sig>


Mehr Informationen über die Mailingliste linux-l