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

Reply via email to