On Sun, Mar 09, 2008 at 06:34:48PM +0100, Pierre Habouzit wrote: > On Sun, Mar 09, 2008 at 05:21:47PM +0000, Kurt Roeckx wrote: > > On Sun, Mar 09, 2008 at 05:50:16PM +0100, Pierre Habouzit wrote: > > > > > > AHAHAHAHAHA I totally missed that part in the first read. You're > > > totally on crack. Under C, NULL is defined as (void *)0 > > > (and *NOT* (char *)0 that is TOTALLY wrong for obvious reasons), and > > > "someone" is not going to #define NULL 0. > > > > It is defined like that on some OSs. > > Not in Debian, and dpkg is mostly a Debian tool, working on the glibc, > that defines NULL the proper way. > > > It's perfectly valid to do that. > > No it's not, and OSes that do, are not C99 compliant (and not even C89 IIRC, > but I've no C89 spec at hand to check). > > > In case of stdarg you need to cast NULL to a pointer. > > That's the very reason why NULL shall be a pointer. > > Here is the relevant C99 quote: > > > ยง 7.17 Common definitions <stddef.h> > [...] > 3 The macros are > NULL > which expands to an implementation-defined null pointer constant; and
6.3.2.3 Pointers [...] 3 An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.55) If a null pointer constant is assigned to or compared for equality to a pointer, the constant is converted to a pointer of that type. Such a pointer, called a null pointer, is guaranteed to compare unequal to a pointer to any object or function. [...] 55) The macro NULL is defined in <stddef.h> as a null pointer constant; see 7.17. Kurt -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]