On Sat, Jul 2, 2011 at 11:16 AM, Jonathan Gray <[email protected]> wrote: > As pointed out by Richard Guenther our definition > of NULL will be incorrect for c++ compilers that aren't > gcc (or pretend to be gcc like clang). > > Index: dirent.h > =================================================================== > RCS file: /cvs/src/include/dirent.h,v > retrieving revision 1.21 > diff -u -p -r1.21 dirent.h > --- dirent.h B B 6 Apr 2011 11:39:42 -0000 B B B 1.21 > +++ dirent.h B B 2 Jul 2011 07:18:49 -0000 > @@ -84,6 +84,8 @@ typedef struct _dirdesc { > B #ifndef NULL > B #ifdef B B B B __GNUG__ > B #define B B B B NULL B B __null > +#elif defined(__cplusplus) > +#define B B B B NULL B B 0L > B #else > B #define B B B B NULL B B ((void *)0) > B #endif /* __GNUG__ */ > Index: locale.h > =================================================================== > RCS file: /cvs/src/include/locale.h,v > retrieving revision 1.7 > diff -u -p -r1.7 locale.h > --- locale.h B B 6 Apr 2011 11:39:42 -0000 B B B 1.7 > +++ locale.h B B 2 Jul 2011 07:18:49 -0000 > @@ -59,6 +59,8 @@ struct lconv { > B #ifndef NULL > B #ifdef B B B B __GNUG__ > B #define NULL B __null > +#elif defined(__cplusplus) > +#define B B B B NULL B B 0L > B #else > B #define B B B B NULL B B ((void *)0) > B #endif > Index: stddef.h > =================================================================== > RCS file: /cvs/src/include/stddef.h,v > retrieving revision 1.11 > diff -u -p -r1.11 stddef.h > --- stddef.h B B 6 Apr 2011 11:39:42 -0000 B B B 1.11 > +++ stddef.h B B 2 Jul 2011 07:18:49 -0000 > @@ -67,6 +67,8 @@ typedef B B B __mbstate_t B B mbstate_t; > B #ifndef B B B B NULL > B #ifdef B B B B __GNUG__ > B #define NULL B __null > +#elif defined(__cplusplus) > +#define B B B B NULL B B 0L > B #else > B #define B B B B NULL B B ((void *)0) > B #endif > Index: stdio.h > =================================================================== > RCS file: /cvs/src/include/stdio.h,v > retrieving revision 1.39 > diff -u -p -r1.39 stdio.h > --- stdio.h B B 6 Apr 2011 11:39:42 -0000 B B B 1.39 > +++ stdio.h B B 2 Jul 2011 07:18:49 -0000 > @@ -58,6 +58,8 @@ typedef B B B __off_t off_t; > B #ifndef NULL > B #ifdef B B B B __GNUG__ > B #define B B B B NULL B B __null > +#elif defined(__cplusplus) > +#define B B B B NULL B B 0L > B #else > B #define B B B B NULL B B ((void *)0) > B #endif > Index: stdlib.h > =================================================================== > RCS file: /cvs/src/include/stdlib.h,v > retrieving revision 1.48 > diff -u -p -r1.48 stdlib.h > --- stdlib.h B B 6 Apr 2011 11:39:42 -0000 B B B 1.48 > +++ stdlib.h B B 2 Jul 2011 07:18:49 -0000 > @@ -80,6 +80,8 @@ typedef struct { > B #ifndef B B B B NULL > B #ifdef B B B B __GNUG__ > B #define NULL B __null > +#elif defined(__cplusplus) > +#define B B B B NULL B B 0L > B #else > B #define B B B B NULL B B ((void *)0) > B #endif > Index: string.h > =================================================================== > RCS file: /cvs/src/include/string.h,v > retrieving revision 1.21 > diff -u -p -r1.21 string.h > --- string.h B B 6 Apr 2011 11:39:42 -0000 B B B 1.21 > +++ string.h B B 2 Jul 2011 07:18:49 -0000 > @@ -46,6 +46,8 @@ typedef B B B __size_t B B B B size_t; > B #ifndef B B B B NULL > B #ifdef B B B B __GNUG__ > B #define B B B B NULL B B __null > +#elif defined(__cplusplus) > +#define B B B B NULL B B 0L > B #else > B #define B B B B NULL B B ((void *)0) > B #endif > Index: time.h > =================================================================== > RCS file: /cvs/src/include/time.h,v > retrieving revision 1.19 > diff -u -p -r1.19 time.h > --- time.h B B B 6 Apr 2011 11:39:42 -0000 B B B 1.19 > +++ time.h B B B 2 Jul 2011 07:18:49 -0000 > @@ -47,6 +47,8 @@ > B #ifndef B B B B NULL > B #ifdef B B B B __GNUG__ > B #define B B B B NULL B B __null > +#elif defined(__cplusplus) > +#define B B B B NULL B B 0L > B #else > B #define B B B B NULL B B ((void *)0) > B #endif > Index: unistd.h > =================================================================== > RCS file: /cvs/src/include/unistd.h,v > retrieving revision 1.63 > diff -u -p -r1.63 unistd.h > --- unistd.h B B 6 Apr 2011 11:39:42 -0000 B B B 1.63 > +++ unistd.h B B 2 Jul 2011 07:18:49 -0000 > @@ -58,6 +58,8 @@ > B #ifndef NULL > B #ifdef B B B B __GNUG__ > B #define B B B B NULL B B __null > +#elif defined(__cplusplus) > +#define B B B B NULL B B 0L > B #else > B #define B B B B NULL B B ((void *)0) > B #endif > Index: wchar.h > =================================================================== > RCS file: /cvs/src/include/wchar.h,v > retrieving revision 1.17 > diff -u -p -r1.17 wchar.h > --- wchar.h B B 1 Jun 2011 16:39:07 -0000 B B B 1.17 > +++ wchar.h B B 2 Jul 2011 07:18:49 -0000 > @@ -65,6 +65,8 @@ > B #ifndef B B B B NULL > B #ifdef __GNUG__ > B #define B B B B NULL B B __null > +#elif defined(__cplusplus) > +#define B B B B NULL B B 0L > B #else > B #define B B B B NULL B B ((void *)0) > B #endif > >
Is there a reason for that NULL is defined at so many places? BR Dunceor
