Soweit ich weiß, definiert C NULL
wie folgt:
Wie sollen wir dann NULL_POINTER
definieren? Ich habe es in meinem Programm gleich definiert und es hat funktioniert, aber ich denke, das ist nur ein Zufall:
Was wäre die logische Definition, falls vorhanden?
und
%Vor%sind beide gültig. Wenn Sie ein eigenes Makro für Nullzeiger implementieren müssen, gilt die gleiche Regel.
C11 (ISO / IEC 9899: 201x) §6.3.2.3 Zeiger Abschnitt 3
Ein ganzzahliger Konstantenausdruck mit dem Wert
bezeichnet0
oder ein solcher Ausdruck, der in den Typ umgewandelt wirdvoid *
, wird als Nullzeigerkonstante
Nur in Zeigerkontexten sind NULL
und 0
gleichwertig. NULL
sollte nicht verwendet werden, wenn eine andere Art von 0
benötigt wird, auch wenn es funktionieren könnte, da dies die falsche Stilmitteilung sendet. (Außerdem erlaubt ANSI die Definition von NULL
als ((void *)0)
, was in Nicht-Pointer-Kontexten überhaupt nicht funktioniert.) Verwenden Sie insbesondere nicht NULL
, wenn das ASCII-Nullzeichen (NUL) gewünscht wird. Geben Sie Ihre eigene Definition an
NULL
sollte nur als Zeigerkonstante verwendet werden.
Tags und Links c pointers null c-preprocessor