From c8a9c22173f485c8c053709e1dfa0a617cb6be1a Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sun, 24 Nov 2013 21:42:55 -0500 Subject: restore type of NULL to void * except when used in C++ programs unfortunately this eliminates the ability of the compiler to diagnose some dangerous/incorrect usage, but POSIX requires (as an extension to the C language, i.e. CX shaded) that NULL have type void *. plain C allows it to be defined as any null pointer constant. the definition 0L is preserved for C++ rather than reverting to plain 0 to avoid dangerous behavior in non-conforming programs which use NULL as a variadic sentinel. (it's impossible to use (void *)0 for C++ since C++ lacks the proper implicit pointer conversions, and other popular alternatives like the GCC __null extension seem non-conforming to the standard's requirements.) --- include/time.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include/time.h') diff --git a/include/time.h b/include/time.h index 6e499ffe..70574093 100644 --- a/include/time.h +++ b/include/time.h @@ -7,7 +7,12 @@ extern "C" { #include +#ifdef __cplusplus #define NULL 0L +#else +#define NULL ((void*)0) +#endif + #define __NEED_size_t #define __NEED_time_t -- cgit 1.4.1