Re: Portabilität: NULL

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

Autor: Alexander Holler (holler_at_ahsoftware.de)
Datum: 16. Aug 2002


Tag,

--On Freitag, August 16, 2002 14:23:21 +0200 Wolfgang Jährling
<wolfgang_at_pro-linux.de> wrote:

> Alexander Holler <holler_at_ahsoftware.de> wrote:
>> Schon alleine eine Definition von NULL als (void *)0 bringt zumindest
>> eine Menge Warnungen wenn nicht gar Fehler bei der meisten Software mit
>> sich (z.B. FILE* p = NULL -> FILE* P = (void)0).
>
> Wenn dein Präprozessor die Sterne aus Makros frühstückt, ist das
> wohl ein Bug.

In Zukunft spare ich mir solche Anektoten. Dann mach ich keine Tippfehler
und muss mich nicht mit leidigen Diskussionen herumplagen.

>> Eine Definition ob (void *)0 logisch als unwahr zu betrachten ist,
>> könnte ich mir schon eher vorstellen, aber auch da hätte ich meine
>> Zweifel.
>
> Warum sollte es im Unterschied zu 0-Konstanten anderer Typen nicht
> logisch unwahr sein?

Ein Compiler definiert true (TRUE o.ä., bitte nich wieder mit Standards
erschlagen...) meist als != 0. Das sind Integer o.ä. Wenn jetzt z.B. ne
Hardware daherkommt (was ich als eigentliche "Anektote" erzählen wollte),
die Unterschiede bei Zeigern auf verschieden Typen hat, muss ein (void*)0
bei einer Konvertierung in einen Interger nicht unbedingt 0 ergeben. Wenn
die Hardware z.B. 1 Byte zur Unterscheidung des Zeigertyps benutzt (d.h.
code* =0x01nnnnn, daten* = 0x02nnnnn) dann kann das schiefgehen.

Ansonsten halte ich mich aus dieser Diskussion jetzt heraus, ich bereue
wirklich, daß ich damit angefangen habe, und bedauere daß es hier oft so
enden muß...

Gruß,

Alexander


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

Dieses Archiv wurde generiert von hypermail 2.1.4 : 16. Aug 2002 CEST