Re: Portabilität: NULL

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

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


Hallo Markus,

--On Freitag, August 16, 2002 13:38:22 +0200 Markus Demleitner
<msdemlei_at_cl.uni-heidelberg.de> wrote:

> On Fri, Aug 16, 2002 at 12:17:05PM +0200, Alexander Holler wrote:
>> > 6.3.2.3 Pointers
>> > 3 An integer constant expression with the value 0, or such an
>> > expression cast to type void *, is called a null pointer constant.55)
>> > If a null pointer constant is converted to a pointer type, the
>> > resulting pointer, called a null pointer, is guaranteed to compare
>> > unequal to a pointer to any object or function.
>> > 4 Conversion of a null pointer to another pointer type yields a null
>> > pointer of that type. Any two null pointers shall compare equal.
>> >
>> > 55) The macro NULL is defined in <stddef.h> (and other headers) as a
>> > null pointer constant; see 7.17.
>>
>> Ich darf das mal erklären. Oben steht das NULL als (void *)0 definiert
>> werden darf.
>>
>> 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).
> Was? Wieso? Klarer als der ISO-C-Standard (daraus ist das Zitat oben)
> kanns doch eigentlich nicht mehr gehen. Ein Compiler, der bei sowas
> eine Warnung wirft oder gar inkorrekten Code erzeugt, implementiert
> irgendwas, aber sicher kein ISO-C.

Probier das mal mit einem C++-Compiler.

>> Und ich bezweifel, daß es ein Definition gibt, die besagt das (void*)0
>> == (int)0 oder (long)0 ist. Eine Definition ob (void *)0 logisch als
>> unwahr zu
> Das ist auch nicht die Behauptung. Die Behauptung ist, dass
> (void*)0 per Definitionem der Nullpointer ist (gleiches gilt natürlich
> für (void*)(1/2) oder (void*)(a-a) für int a).

Ich schrieb das ein if(p!=NULL) nicht gleich einem if(p) ist (wenn auch mit
Tippfehlern ;) ). Das war die Behauptung und nicht der Part der ISO.
Ebensowenig bezog ich mich nur auf ISO-C.

Zum Rest spare ich mir die Kommentare, das artet schon wieder aus...

Gruß,

Alexander


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

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