[LC++]Null or 0
Torsten Rennett
Torsten at Rennett.de
Mon Feb 23 17:15:01 UTC 2004
On Sonntag, 22. Februar 2004 16:12, Peter Poulsen wrote:
> I have read that we should use 0 over NULL when setting a pointer to
> "nothing".
>
> Does anybody know why?
In C NULL is often defined as '(void *)0' and this is incorrect in C++
because there the type of NULL must be an integer type. Otherwise, you
could not assign NULL to a pointer. This is because in C++ there is no
automatic conversion from 'void *' to any other type.
So several people and style guides recommend not using NULL in C++. But
nowadays most of the heaeder files are prepared for using C++ and they
define NULL correctly (as 0, or with gcc as __null). Using NULL with gcc
is perfectly OK.
> To me it seems better to use NULL as it indicates
> in the code that this is a pointer being set to nothing, and not an
> interger being assigned the value 0.
ACK! And thats the reason why I still use NULL and also recommend in doing
so.
> I am aware that in most compilers NULL is just a macro for 0.
... if you are using C++ (i.e. '__cplusplus' is defined). For C it will
most certainly still be '(void *)0'. Have a look at stddef.h.
Torsten
--
Ingenieurbuero RENNETT -- innovative Software-Entwicklung --
Torsten Rennett http://www.RENNETT.de
Ludwig-Thoma-Weg 14 E-Mail: mailto:Torsten at Rennett.de
D-85551 Heimstetten Telefon: +49-89-90480538
More information about the tuxCPProgramming
mailing list