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

Jan-Benedict Glaw jbglaw at lug-owl.de
Fr Nov 25 19:24:26 CET 2005


On Fri, 2005-11-25 16:18:27 +0100, Steffen Dettmer <steffen at dett.de> wrote:
> if (c) if (c2) a else b
> 
> ist nämlich einfach mal falsch weil undefiniert (zu welchem if das else
> gehört). Klar, hier schreibt man eh "&&".

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.

> Auch eine Falle aus der Praxis:
> 
> if (c)
> #if defined(C)
>   a;
> #elif defined(C2)
>   b;
> #else
>   c; /* kann ja später hinzukommen! */
>   d; 
> #endif
>     
> "d" wird immer gemacht, wenn nicht C und nicht C2, wollte der Autor aber
> vermutlich nicht.

Prima... Das sieht nach 5 mal portiert und immernoch nicht hinbekommen
aus...

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/20051125/ae4dfc1f/attachment.sig>


Mehr Informationen über die Mailingliste linux-l