Jörg Wunsch schrieb:
> Rolf Magnus schrieb:
>
>>> while ((tmp & status) != 0)
>>> /* wait */;
>>
>> Das wird aber so leider eine Warnung bei neueren GCCs verursachen, die
>> sagt, daß man lieber geschweifte Klammern satt eines Semikolon verwenden
>> soll.
>
> Seit welcher Version macht er das denn?
Hmm, gute Frage. Mir ist diese Warnung demletzt mal aufgefallen, aber
ich kann sie gerade nicht reproduzieren. Wenn sie mir nochmal über den
Weg läuft, sage ich bescheid.
>>> wobei ich persönlich die längere Form besser lesbar (weil offensicht-
>>> licher) finde.
>>
>> Man kann auch eine andere Sichtweise haben: Wer die C-Regeln kennt, hat
>> mit der kurzen Form auch kein Problem.
>
> Das stimmt schon, ich finde nur, dass man länger hingucken muss, wenn
> da gar kein Vergleichsoperator drin ist. Aber es ist in der Tat
> Geschmackssache.
Ja.
> Mein Geschmack ist hier möglicherweise auch durch
> FreeBSD's style(9) mit modifiziert worden, welches folgende Regeln
> aufstellt:
>
> Test pointers against NULL, e.g., use:
>
> (p = f()) == NULL
>
> not:
>
> !(p = f())
In diesem Fall kann ich das nachvollziehen. Wenn jetzt aber nur da
steht:
if (!p)
gegen
if (p == NULL)
gefällt mir die erste Variante besser. Ich finde, sie liegt näher an
dem, was man damit eigentlich meint ("kein Objekt"), als die zweite
("Zeiger auf das Objekt ist gleich einem Nullzeiger).
Auch schön bei Strings:
if (!string || !*string)
Wenn kein String oder String keinen Inhalt hat.
> Do not use ! for tests unless it is a boolean, e.g. use:
>
> if (*p == '\0')
>
> not:
>
> if (!*p)
Hier hätte ich früher immer die zweite Variante genommen, heute tendiere
ich auch eher zur ersten.
Jörg Wunsch schrieb:
> Helfer schrieb:
>
>> Die Klammer-Schreibweise gewöhne ich mir z.Zt. an, da ich sie in diesem
>> Fall übersichtlicher finde als das einsame Semikolon
>>
>>> while ( (tmp & status) != 0 ) {}
>>
>> while ( (tmp & status) != 0 );
>>
> Daher habe ich beim einzelnen Semikolon selbiges auch immer auf eine
> Zeile für sich gesetzt und es mit einem Kommentar verziert, wie oben
> gezeigt.
Ich finde den Kommentar eher nicht so geschickt, weil das kleine
Semikolon daneben etwas untergeht. Man muß zweimal hinsehen, um es zu
finden. Wenn da wirklich ein einzelnes Semikolon mitten in der Zeile
thront, kann man es nicht übersehen, und daß es nicht in der selben
Zeile wie das while steht, reicht für mich, um zu erkennen, daß es
Absicht war.