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

Jan-Benedict Glaw jbglaw at lug-owl.de
Do Nov 24 08:05:24 CET 2005


On Thu, 2005-11-24 00:43:56 +0100, Oliver Bandel <oliver at first.in-berlin.de> wrote:
> Auch mache ich es normalerweise so, daß ich jeden Pointer, den ich
> irgendwann mal im Laufe der Funktion benutze, gleich am Anfang
> schon auf NULL setze. Dann ist er in gewisser Weise in einem
> definierten Zustand und ich kann mit NULL-Tests immer abchecken,
> was Sache ist. (Ich chekce auch immer alle Args auf NULL,
> was manche inem paranoid erscheint - aber für gute/solide SW-Entwicklung
> braucht man diesen gewissen paranoiden Mindest-Zustand ;-))

Hmmm... Das seh' ich anders. Wenn ein pointer dazu genutzt werden
soll, ein Ergebnis entgegenzunehmen, warum sollte man ihn dann vorher
nochmal initialisieren? Das bläht doch nur das DATA-Segment auf...

> Falls man nämlich aus irgend einem Grunde mal eine Funktion, die
> den ersten Zuweisungsakt zu jenem Pointer unternimmt, auskommentiert
> oder irgendwie anders verbaselt, dann hat man definitiv
> seine NULL drinne. :)

Wenn ich in einer Funktion was auskommentiere, gucke ich sie mir
nochmal an :-)

> (Und wenn andere Funktionen das immer schön abtesten, weiß man
>  dann, wenn es an irgend einer Stelle statt eines Crashes eine
>  Fehlermeldung gibt, daß da eine NULL erschien, die nicht erwartet wurde,
>  wie weit Fehler in einer Source reichen können... "Das Weltall, unbekannte Tiefen...")

Wenn schon, dann richtig!  In so einer Situation (wo eine _erwartete_
Zuweisung aufmal weg ist) würde ich einen Crash / assert erwarten.

> Das selbe gilt natürlich auch für andere Variablen:
> int immer auf 0 definieren (außer ein anderer Wert
> macht mehr Sinn), auch wenn man es anscheinend soweiso nochmal
> zuweist... usw.

*schuettel*

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/20051124/a93106a8/attachment.sig>


Mehr Informationen über die Mailingliste linux-l