[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