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

Steffen Dettmer steffen at dett.de
Fr Nov 25 16:13:17 CET 2005


* Oliver Bandel wrote on Thu, Nov 24, 2005 at 00:43 +0100:
> 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 ;-))

Ich "initialisiere" Zeiger auch gern mit 0xcccccccc oder so. Dann knallt
es wenigstens an der richtigen Stelle unter Linux zuverlässig. Das
Testen macht der Unittest - und ein "Absturz" findet sich oft leichter,
als wenn man sich am Ende wundert, warum die Funktion gar nichts gemacht
hat (weil intern irgendwas NULL war und die Aktion nicht erledigt werden
konnte). Natürlich helfen assert(p != NULL) auch gut.

Ich will nur sagen: "es kommt darauf an" :)

> 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.

Nee, dann merkt man ja gar nicht, wenn man eine Variable uninitialisiert
verwendet - nichtmal ne Compilerwarnung gibt es! Ich möchte gern alle
(und besonders solche) Fehler vermeiden. Obwohl es natürlich in vielen
Fällen OK ist, auf 0 zu initialisieren, wenn dieser Wert unter Umständen
"richtig" sein kann.

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.



Mehr Informationen über die Mailingliste linux-l