bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: definition of NULL


From: Eric Blake
Subject: Re: definition of NULL
Date: Tue, 11 Aug 2009 20:36:19 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Eric Blake <ebb9 <at> byu.net> writes:

> > Indeed, "sizeof (void*)0" parses as sizeof of the type 'void *', followed 
by a
> > stray 0 token => parse error.
> 
> I argue that NetBSD's definition of NULL is thus buggy, and that we should 
add 
> a gnulib check and config.h workaround for it.  POSIX requires:
> 
> "The macro shall expand to an integer constant expression with the value 0 
cast 
> to type void *."
> 
> which implies to me that I should be able to use NULL without having to add 
> extra parenthesis myself.

The one quote listed above is insufficient (it came from XBD 13, 
http://www.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html#tag_13_47)
.  But coupled with this additional quote from POSIX XSH 2.1.2, I can back up 
my claim that since NULL is an object-like macro, and nothing in <stddef.h> 
specifies to the contrary, NULL shall be properly protected by parentheses - 
hence NetBSD NULL does not comply with POSIX 2008.

"Each of the following statements shall apply to all macros unless explicitly 
stated otherwise:
1. Any definition of an object-like macro in a header shall expand to code that 
is fully protected by parentheses where necessary, so that it groups in an 
arbitrary expression as if it were a single identifier."
http://www.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_0
1

-- 
Eric Blake







reply via email to

[Prev in Thread] Current Thread [Next in Thread]