On 4 June 2011 00:54, malc <av1...@comtv.ru> wrote: > On Sat, 4 Jun 2011, Aurelien Jarno wrote: > >> On Sat, Jun 04, 2011 at 01:57:23AM +0400, malc wrote: >> > On Fri, 3 Jun 2011, Aurelien Jarno wrote: >> > >> > > On Fri, Apr 29, 2011 at 05:59:19PM +0200, Marc-Antoine Perennou wrote: >> > > > pulse/simple.h does not include stdlib.h >> > > > We cannot use NULL since it may not be defined >> > > > Use 0 instead >> > > >> > > I am unable to reproduce this issue, even with gcc-4.6. Also please note >> > > that NULL is defined in <stddef.h>, not <stdlib.h>. <stddef.h> is >> > > included from <sys/types.h> which is included from <pulse/simple.h>. >> > > >> > > Do you have more information about the issue. >> > > >> > > > Signed-off-by: Marc-Antoine Perennou <marc-anto...@perennou.com> >> > > > --- >> > > > configure | 2 +- >> > > > 1 files changed, 1 insertions(+), 1 deletions(-) >> > > > >> > > > diff --git a/configure b/configure >> > > > index ea8b676..d67c3ce 100755 >> > > > --- a/configure >> > > > +++ b/configure >> > > > @@ -1567,7 +1567,7 @@ for drv in $audio_drv_list; do >> > > > >> > > > pa) >> > > > audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \ >> > > > - "pa_simple *s = NULL; pa_simple_free(s); return 0;" >> > > > + "pa_simple *s = 0; pa_simple_free(s); return 0;" >> > > >> > > It should be ((void*)0) instead of simply 0. >> > >> > No it shouldn't. >> > >> >> If we want to replace #include <stddef.h>, which should use the same >> code, that is: >> >> | #ifndef __cplusplus >> | #define NULL ((void *)0) >> | #else /* C++ */ >> | #define NULL 0 >> | #endif /* C++ */ >> >> Given we are writing C code and not C++ code, NULL is defined as >> ((void *)0). > > Doesn't make a dent of a differnce how particular implementation defines > NULL, 6.2.3.3#3 covers it, what i'm trying to get across is that your > strong "should" is wrong. > > -- > mailto:av1...@comtv.ru
It's kinda weird actually, just wrote a small program to test: #include <stddef.h> int main() { int * i = NULL; return 0; } It builds fine Now if I replace "stddef.h" by "sys/types.h" ‘NULL’ undeclared I'm running Gentoo GNU/Linux, and everyone using it in my friends get the same problem, and there is no problem at all with the whole system which is around. (Only gcc 4.6 is installed fyi) Manually including stddef.h or replacing NULL by 0 or (void*)0 makes it work. Hope I provided enough informations to justify this thread